在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
$FUNCNAME、$LINENO、$PWD
现有个脚本 #!/bin/bash testa() { echo 'func='$FUNCNAME,$LINENO } testa echo 'lineno:'$LINENO echo 'xx:'$FUNCNAME echo 'curpath:'$PWD 执行
在
$$、$PPID这两个变量依次表示当前进程ID和父进程ID 现有
#!/bin/bash #set -u echo 'cur pid:'$$ echo 'parent pid:'$PPID sleep 20 在当前终端执行 [tt@ecs-centos-7 ~]$ ./a.sh cur pid:13095 parent pid:12982 在执行 [tt@ecs-centos-7 ~]$ ps -o pid,ppid,time,cmd -p 12982,13095 PID PPID TIME CMD 12982 12981 00:00:00 -bash 13095 12982 00:00:00 /bin/bash ./a.sh 从上面的结果可以看出, 执行 $0,$1,$2...$n、$#
第十个参数及以后的参数必须要用大括号括起来,例如: ${10}、${11}、${12} 依次表示第十个变量、第十一个变量、第十二个变量 $*、$@都表示位置参数,不过它们之间也有些不同点 使用 而对于 现有 #!/bin/bash cnt=1 echo 'test 1111' for var in "$*" do echo "arg$cnt="$var let "cnt+=1" done echo cnt=1 echo 'test 2222' for var in $* do echo "arg$cnt="$var let "cnt+=1" done echo cnt=1 echo 'test 3333' for var in "$@" do echo "arg$cnt="$var let "cnt+=1" done echo cnt=1 echo "test 4444" for var in $@ do echo "arg$cnt="$var let "cnt+=1" done 执行
从上面的结果可以看出,对于 $* 来说,加了双引号之后所有位置参数就会被视为一个单词 对于 $@ 来说,是否加双引号,结果都是一样的 所以,仅在使用双引号时,$* 和 $@ 才会有差异 $?命令、函数或者脚本的退出状态,在判断命令的执行结果或者函数的调用结果时很有用处 现有 e.sh 脚本 #!/bin/bash test_func() { if [[ $1 -eq 10 ]]; then return 5 fi return 6 } if [ $# -ge 1 ]; then name="$1" shift 1 $name "$@" fi f.sh 脚本 #!/bin/bash sh e.sh test_func 3 echo 'exit code1:'$? sh e.sh test_func 10 echo 'exit code2:'$? test -f $PWD/xx.txt echo 'exit code3:'$? test -f $PWD/e.sh echo 'exit code4:'$? 执行
脚本
在Linux中,命令执行成功,退出状态为 0 ,失败则为非 0
由于 $IFS此变量用于 Bash 识别字符串或单词边界,默认值是空格,脚本中根据需要可以修改此变量的值 现有 #!/bin/bash va="a:b:c" vb="x-y-z" vc="e,f,g" IFS=":" echo 'va:'$va echo 'vb:'$vb echo 'vc:'$vc echo IFS="-" echo 'va:'$va echo 'vb:'$vb echo 'vc:'$vc echo IFS="," echo 'va:'$va echo 'vb:'$vb echo 'vc:'$vc 执行
从结果可以看出,当 当 当 $HOME、$USER、$UID、$GROUPS HOME: 用户home目录 USER: 当前用户名 UID: 当前用户ID GROUPS: 当前用户组ID [tt@ecs-centos-7 ~]$ echo $HOME /home/tt [tt@ecs-centos-7 ~]$ echo $USER tt [tt@ecs-centos-7 ~]$ echo $UID 1003 [tt@ecs-centos-7 ~]$ echo $GROUPS 1003 $HOSTTYPE、$MACTYPE、$OSTYPE这些变量都表示系统硬件 [tt@ecs-centos-7 ~]$ echo $HOSTTYPE x86_64 [tt@ecs-centos-7 ~]$ echo $MACHTYPE x86_64-redhat-linux-gnu [tt@ecs-centos-7 ~]$ echo $OSTYPE linux-gnu 小结本文介绍了一些常用的 Bash 内置变量,对于一些生僻或者平常很少用到的变量可以自行查阅相关资料 以上就是shell 脚本中常用的内置变量(Bash 内置变量)的详细内容,更多关于shell内置变量的资料请关注极客世界其它相关文章! |
请发表评论