老男孩IT教育,只培养技术精英

全国免费咨询电话:400-609-2893
Shell编程特殊变量有哪些?Shell编程特殊变量用法

    /    2019-01-28

1. 位置变量

常用的特殊位置参数说明

位置变量作用说明
$0获取当前执行的shell脚本的文件名,如果执行脚本带路径那么就包括脚本路径
$n获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本的文件名,如果n大于9用大括号括起来{10},参数以空格隔开
$#获取当前执行的shell脚本后面接的参数的总个数
$*获取当前shell的所有传参的参数,不加引号同$@;如果给$*加上双引号,例如: “$*”,则表示将所有的参数视为单个字符串,相当于“112$3”
$@
获取当前shell的所有传参的参数,不加引号同$*;如果给$@加上双引号,例如: “$@”,则表示将所有参数视为不同的独立字符串,相当于“$1” “$2” “$3” “……”,这是将参数传递给其他程序的最佳方式,因为他会保留所有内嵌在每个参数里的任何空白
当“$*”和“$@”都加双引号时,两者有区别,都不加双引号时,两者无区别

0,0,1.$2 ~ 参数实践

[root@oldboy scripts]# vim chanshu.sh
#!/bin/bash 
echo $0
echo "第一个参数:" $1
echo "第二个参数:" $2
echo "第11个参数:" ${11}
[root@oldboy scripts]# sh chanshu.shchanshu.sh
第一个参数:
第二个参数:
第11个参数:
[root@oldboy scripts]# sh chanshu.sh 1 2 3 4 5 6 7 8 9 10 11 chanshu.sh
第一个参数: 1
第二个参数: 2
第11个参数: 11

$# 参数实践

[root@oldboy scripts]# vim chanshu.sh

echo $0
echo "第一个参数:" $1
echo "第二个参数:" $2
echo "第10个参数:" ${10}
echo "第11个参数:" ${11}
echo "参数个数:" $#

[root@oldboy scripts]# sh chanshu.sh 55 2 3 4 5 6 7 8 9 10 11 112chanshu.sh
第一个参数: 55
第二个参数: 2
第10个参数: 10
第11个参数: 11
参数个数: 12

$* 参数实践

[root@oldboy scripts]# vim chanshu.sh
echo $0
echo "第一个参数:" $1
echo "第二个参数:" $2
echo "第10个参数:" ${10}
echo "第11个参数:" ${11}
echo "参数个数:" $#echo "参数:" $*"chanshu.sh" 18L, 456C 已写入                                  
[root@oldboy scripts]# sh chanshu.sh 55 2 3 4 5 6 7 8 9 10 11 112chanshu.sh
第一个参数: 55
第二个参数: 2
第10个参数: 10
第11个参数: 11
参数个数: 12
参数: 55 2 3 4 5 6 7 8 9 10 11 112

$* 与 $@ 对比实践

[root@oldboy scripts]# set -- "I am" handsome boy..
[root@oldboy scripts]# echo $1I am
[root@oldboy scripts]# echo $2handsome
[root@oldboy scripts]# echo $3boy..
[root@oldboy scripts]# echo $*I am handsome boy..
[root@oldboy scripts]# echo $@I am handsome boy..

[root@oldboy scripts]# for i in $*;do echo $i ;doneI
am
handsome
boy..
[root@oldboy scripts]# for i in $@;do echo $i ;doneI
am
handsome
boy..
[root@oldboy scripts]# for i in "$@";do echo $i ;doneI am
handsome
boy..
[root@oldboy scripts]# for i in "$*";do echo $i ;done
I am handsome boy..

2. 进程状态变量

Shell进程的特殊状态变量说明

位置变量作用说明
$?获取执行上一个指令的执行状态返回值(0为成功,非零为失败),这个变量最常用
$$获取当前执行的Shell脚本的进程号(PID),这个变量不常用,了解即可
$!获取上一个在后台工作的进程的进程号(PID),这个变量不常用,了解即可
$_获取在此之前执行的命令或脚本的最后一个参数,这个变量不常用,了解即可

进程参数实践

[root@oldboy scripts]# echo $?0
[root@oldboy scripts]# echo $$
1368
[root@oldboy scripts]# echo $!

[root@oldboy scripts]# echo $_
echo

3. echo参数说明

参数参数说明
-n不要追加换行
-e启用下列反斜杠转义的解释
-E显式地抑制对于反斜杠转义的解释

`echo' 对下列反斜杠字符进行转义:
\n换行
\r回车
\t横向制表符
\b退格
\v纵向制表符
\c抑制更多的输出


(0)

分享至