shell传递参数

    在编写脚本时,要注意参数的形式和传递方式,我们今天就一起来学习一下:

shell的环境变量

shell的环境变量分为可写的可读的和环境变量两大类:

1、可写的环境变量

    可以对它们赋值,大部分可写的shell环境变量都在登录过程中执行“/etc/profile”文件时进行初始化。改文件由系统管理员设置,用于为系统上的所有用户建立一个公共环境。

    用户也可以通过修改自己的启动文件“.bash_profile”中的部分或所有变量的值来定制自己的运行环境,新建用户账号时,系统会为每一个用户都建立一个“.bash_profile”文件,每次用户登录时都要执行它。表中列出大部分可以修改的shell环境变量:

环境变量

含义

CDPATH

包含一系列目录名;如果该变量未设置,cd命令将搜索当前目录

ENV

UNIX/Linux查找配置文件的路径

HOME

用户初次登录时的起始目录名

MAIL

用户的系统邮箱文件的名称

MAILCHECK

Shell检查用户邮箱并通知用户的间隔时间(单位为秒)

PATH

包含用户搜索路径的变量

PPID

父进程的进程ID

PS1

命令行上的Shell提示符,普通用户是“$”,管理员是“#”

PS2

如果Shell认为一个命令尚未结束,会在第二行显示提示符提示继续输入

PWD

当前工作目录的名称

TERM

用户控制终端的类型

    例如:执行显示系统提示符环境变量的值

    [root@localhost ~]# echo $PS1

    [\u@\h \W]\$

    注意:环境变量一般都是大写的,若要修改,直接用赋值的方式就可以。

    2、只读的shell环境变量

    只读的环境变量意味着用户能使用和读取它们的值,但不能修改。它也分为两类:

   (1)特殊的环境变量

        指系统预先定义好的,用户不能重新设置,常见的只读环境变量如下表:

环境变量

含义

$0

Shell程序名

$1-$9

第1个至第9个命令行参数的值

$*

所有命令行参数的值

$#/$@

命令行参数的总数

$$

当前进程的进程ID(PID)

$?

最后执行的一条命令的退出状态,0为成功,非0为失败

$!

在后台运行的最后一个进程的进程ID

$-

显示Shell使用的当前选项,与set命令功能相同

    注意:$*和$@的不同点:

    只有在双引号中体现出来,如下:

    [root@localhost ~]# cat test4

    #!/bin/bash

 

    for i in "$*";do

    echo $i

    done

 

    for i in "$@";do

    echo $i

    done

    [root@localhost ~]# bash test4 1 2 3

    1 2 3 //把“1 2 3”看成了一个参数

    1

    2

    3

   (2)位置参数

        用于处理命令行参数,出现在命令行上的位置确定的参数。

        在Bash中总共有十个 位置参数,其对应的名称依次是$0,$1,$2,...,$9。其中$0始终表示命令名或脚本名,对于一个命令行,必然有命令名也就是$0;而其他位置参数根据实际要求,可有可无。

        ①输出位置参数

        [root@localhost ~]# cat > test1 //利用屏幕复制的方法建立脚本文件

        echo $1 $2 $3 $4 $5 $6 $7 $8 $9 $0

        Ctrl+D //保存并结束

        [root@localhost ~]# sh test1 a b c d e f g

        a b c d e f g test1 //运行结果

        ②用set命令给位置参数赋值

        [root@localhost ~]# cat > test2

        echo $1 $2 $3

        set m1 m2 m3 //m1,m2,m3分别赋值给$1,$2,$3

        echo $1 $2 $3

        [root@localhost ~]# bash test2 a b c

        a b c

        m1 m2 m3

        ③移动位置参数

        此处我们引入shift,每执行依次shift命令,就把位置参数整体向左移一位,但不能将$0的值移走。

        [root@localhost ~]# cat test3

        echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $#

        shift

        echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $#

        shift 4

        echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $#

        [root@localhost ~]# sh test3 a b c d e f g h i j k

        test3 a b c d e f g h i 11

        test3 b c d e f g h i j 10

        test3 f g h i j k 6

全部评论

相关推荐

零零幺零零幺:至少再做一个项目,然后猛投小厂,不然有点难
点赞 评论 收藏
分享
03-11 23:33
已编辑
曲阜师范大学 后端工程师
牛客68808588...:果真开发过12306购票系统吗,这不是一眼就被看穿了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 一张图晒出你司的标语 #
4356次浏览 77人参与
# AI面会问哪些问题? #
28127次浏览 565人参与
# 厦门银行科技岗值不值得投 #
8072次浏览 188人参与
# 你的实习产出是真实的还是包装的? #
20302次浏览 343人参与
# 找AI工作可以去哪些公司? #
9269次浏览 246人参与
# 春招至今,你的战绩如何? #
65914次浏览 584人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
15335次浏览 223人参与
# 从事AI岗需要掌握哪些技术栈? #
9098次浏览 319人参与
# 中国电信笔试 #
32033次浏览 293人参与
# 你做过最难的笔试是哪家公司 #
34008次浏览 244人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
340927次浏览 2175人参与
# 哪些公司真双非友好? #
69672次浏览 289人参与
# 阿里笔试 #
178839次浏览 1317人参与
# 机械人避雷的岗位/公司 #
62708次浏览 393人参与
# 小马智行求职进展汇总 #
25139次浏览 80人参与
# 第一份工作一定要去大厂吗 #
14817次浏览 122人参与
# 金三银四,你的春招进行到哪个阶段了? #
22158次浏览 280人参与
# 为了减少AI幻觉,你注入过哪些设定? #
26269次浏览 310人参与
# 应届生第一份工资要多少合适 #
20692次浏览 86人参与
# 沪漂/北漂你觉得哪个更苦? #
9990次浏览 194人参与
# 聊聊你的职场新体验 #
336545次浏览 1895人参与
# HR最不可信的一句话是__ #
6325次浏览 114人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务