[步骤] Linux 位置变量

案例一:脚本本身

1.1 脚本本身的名称

$0

1.2 显示脚本本身的名称

# echo $0 

案例二:脚本某 1 个参数

2.1 脚本某 1 个参数

$<number>

(补充:当 为 1 时代表第 1 个位置参数、当 为 2 时代表第 2 个位置参数以此类推)

2.2 显示脚本某 1 个参数的值

# echo $<number>

案例三:脚本最后 1 个参数

3.1 脚本最后 1 个参数

\$$#

3.2 显示脚本最后 1 个参数的值

# eval echo \$$#

案例四:脚本参数的个数

4.1 脚本参数的个数

$#

4.2 显示脚本参数的个数

# echo $#

案例五:脚本所有参数的值

5.1 脚本所有参数的值

$*

或者:

$@


补充:
1) 当所有参数不被双引号 “””” 包括时,$* 和 $@ 会让每个参数都被一个双引号 “””” 包括,例如:”1″ “2” “3” “4” “5” ……
2) 当参数被双引号 “””” 包括时,$* 会将所有参数视为一个整体并用双引号 “””” 包括,例如:”1 2 3 4 5 ……”
3) 当参数被双引号 “””” 包括时,$@ 会让每个参数都被一个双引号 “””” 包括,例如:”1″ “2” “3” “4” “5” ……

5.2 显示脚本所有参数的值

# echo $*

或者:

# echo $@

案例六:上 1 个命令的退出状态代码

6.1 上 1 个命令的退出状态代码

$?


补充:常用退出状态代码如下:
1) 0 成功
2) 1 未知错误
3) 2 Shell 命令被误用
4) 126 无法执行
5) 127 命令没有找到
6) 128 退出参数无效
7) 128+x 来自 Linux 信号 x 的致命错误
8) 130 按键 “Crtl” + “C” 的终止命令
9) 255 不属于规范内的退出状态

6.2 显示上 1 个命令的退出状态代码

# echo $?

案例七:上 1 个进程的 PID

7.1 上 1 个进程的 PID

$$

7.2 显示上 1 个进程的 PID

# echo $$

案例八:设置位置变量

# set a b c d e

(补充:这里以设置 $1 为 a、$2 为 b、$3 为 c、$4 为 d、$5 为 e)

[CONTENT] Linux Variable Default Value

中文

Content One: Set Default Values for Variables on Command Line

1.1 Assign Values to Ordinary Variables

# a=1
# b=

(Add: let a be 1 and B be null as an example)

1.2 Set Default Values for Variables on Command Line

# var1=${a:-no}
# var2=${b:-no}


Add:
If a is null, var1 is no, otherwise var1 is equal to a
If B is null, var2 is no, otherwise var2 is equal to B

1.3 View Variable Results

# echo $var1
1
# echo $var2
no


Add:
The value of a is 1, so var1 is 1
The B is null, so var2 is no

Content Two:Set Variable Defaults in Script

2.1 Setting Variable Defaults in Script

# vim var_default.sh
Create the following:
#!/bin/bash
var_default="${1:-no}"
echo $var_default

(Add:If the variable of $1 is null, then var_default is no, otherwise var_default is equal to $1, and print it out as an example)

2.2 Test Variable Defaults in Script

# bash var_default.sh
no
# bash var_default.sh 1
1
# bash var_default.sh 2
2
# bash var_default.sh 3
3

[内容] Linux 变量默认值

English

内容一:在命令行给变量设置默认值

1.1 给两个普通变量赋值

# a=1
# b=

(补充:这里以让 a 是 1,b 为空值为例)

1.2 在命令行给变量设置默认值

# var1=${a:-no}
# var2=${b:-no}


补充:
1) 如果 a 是空值,则 var1 是 no,否则 var1 等于 a
2) 如果 b 是空值,则 var2 是 no,否则 var2 等于 b

1.3 显示变量结果

# echo $var1
1
# echo $var2
no


补充:
1) a 的值是 1,所以 var1 是 1
2) b 的是空值,所以 var2 是 no

内容二:在脚本中设置变量默认值

2.1 创建设置变量默认值的脚本

# vim var_default.sh

创建以下内容:

#!/bin/bash
var_default="${1:-no}"
echo $var_default

(补充:这里以如果 $1 的变量是空值,则 var_default 是 no,否则 var_default 等于 $1,并显示出来为例)

2.2 测试设置变量默认值的脚本

# bash var_default.sh
no
# bash var_default.sh 1
1
# bash var_default.sh 2
2
# bash var_default.sh 3
3

[内容] Linux 退出状态代码 (转载)

Linux Shell学习笔记:exit退出状态代码

inux提供$?特殊变量来保存最后一条命令执行结束的退出状态。执行完一条命令后,立即执行echo$?,可以查看最后一条命令的退出状态值。

正常的情况下,命令成功执行完成的退出状态是0,如果非0,则命令执行有错。

该命令可以用于检查命令是否正确执行,比如在解压包的时候,检查解压包是否成功十分有效。

 

自定义退出状态码,可以在脚本中定义自己的退出状态代码,然后使用echo $?检查。

退出状态码最高是255,一般自定义的代码值为0~255,如果超出255,则返回该数值被256除了之后的余数。

 

 

退出状态代码:

0 命令成功完成

1通常的未知错误

2误用shell命令

126命令无法执行

127没有找到命令

128无效的退出参数

128+x使用Linux信号x的致命错误。

130使用Ctrl-C终止的命令

255规范外的退出状态

ubuntu下测试结果如下

    wl@wl-MS-7673:/home/python$ date
     
    2013年 11月 14日 星期四 19:12:45 CST
     
    wl@wl-MS-7673:/home/python$ echo $?
     
    0
     
    wl@wl-MS-7673:/home/python$ kkllk
     
    kkllk: command not found
     
    wl@wl-MS-7673:/home/python$ echo $?
     
    127
     
    wl@wl-MS-7673:/home/python$ ls
     
    hello.py hello.py~
     
    wl@wl-MS-7673:/home/python$ vim a.c
     
    wl@wl-MS-7673:/home/python$ ls
     
    hello.py hello.py~
     
    wl@wl-MS-7673:/home/python$ gedit a.c
     
    wl@wl-MS-7673:/home/python$ ./hello.py
     
    bash: ./hello.py: 权限不够
     
    wl@wl-MS-7673:/home/python$ echo $?
     
    126
     
    wl@wl-MS-7673:/home/python$ date %t
     
    date: 无效的日期"%t"
     
    wl@wl-MS-7673:/home/python$ echo $?
     
    1
     
    wl@wl-MS-7673:/home/python$


 

    root@wl-MS-7673:~# ls -sail test
     
    790207 4 -rwxr--r-- 1 root root 30 11月 14 19:25 test
     
    root@wl-MS-7673:~# ./test
     
    root@wl-MS-7673:~# echo $?
     
    44
     
    root@wl-MS-7673:~# cat test
     
    #!/bin/bash
     
    var=300
     
    exit $var
     
    root@wl-MS-7673:~#

————————————————
版权声明:本文为CSDN博主「ChasingdreamLY」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_26591517/article/details/82492829

注明:所有转载内容皆直接从被转载文章网页的标题和内容的文本中复制而来

CC 4.0 BY-SA 版权协议网址:https://creativecommons.org/licenses/by-sa/4.0/deed.z