加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell脚本中$的用处

发布时间:2020-12-15 23:18:51 所属栏目:安全 来源:网络整理
导读:1.$0 获取当前执行的shell脚本的文件名,包括路径。 [ [email?protected] ~]# vi test.sh [ [email?protected] ~]# cat test.sh echo $0 [ [email?protected] ~]# sh test.sh test.sh [ [email?protected] ~]# pwd /root [ [email?protected] ~]# sh /root/t
1.$0 获取当前执行的shell脚本的文件名,包括路径。
[ [email?protected] ~]# vi test.sh
[ [email?protected] ~]# cat test.sh
echo $0
[ [email?protected] ~]# sh test.sh
test.sh
[ [email?protected] ~]# pwd
/root
[ [email?protected] ~]# sh /root/test.sh
/root/test.sh
[ [email?protected] ~]#
2.$n 获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0
时表示脚本的文件名,如果n大于9就要用大括号括起来${10}.

[ [email?protected] ~]# seq -s " $" 0 10
0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10
[ [email?protected] ~]# seq 9|sed ‘s#[0-9]#$&#g‘
$1
$2
$3
$4
$5
$6
$7
$8
$9

[[email?protected] ~]# seq -s " $" 1 10|sed ‘/1/s/1/$1/‘
$1 $2 $3 $4 $5 $6 $7 $8 $9 $10
[[email?protected] ~]# seq -s " $" 1 10|sed ‘/1/s/2/$1/‘
1 $$1 $3 $4 $5 $6 $7 $8 $9 $10
[[email?protected] ~]# seq -s " $" 1 10|sed ‘/1/s/3/$1/‘
1 $2 $$1 $4 $5 $6 $7 $8 $9 $10
[[email?protected] ~]#
[[email?protected] ~]# seq -s " $" 1 10|sed ‘/1/s/10/{10}/‘|sed

‘/1/s/1/$1/‘
$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}
[[email?protected] ~]#
[[email?protected] ~]# sh n.sh kk ff
kk ff
[[email?protected] ~]# sh n.sh seq -s " " 1 10
1 2 3 4 5 6 7 8 9 10
[[email?protected] ~]# sh n.sh seq -s " " 1 9
1 2 3 4 5 6 7 8 9
[[email?protected] ~]# sh n.sh 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
[[email?protected] ~]#
3.$# 获取当前shell命令行中参数的总个数。
[[email?protected] ~]# vi n.sh
[[email?protected] ~]# sh n.sh 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
8
[[email?protected] ~]# sh n.sh seq -s " " 1 9
1 2 3 4 5 6 7 8 9
9
[[email?protected] ~]# sh n.sh "1 2 3 4 5 6 7 8"
1 2 3 4 5 6 7 8
1
[[email?protected] ~]# cat b.sh
dirname $0
basename $0
[[email?protected] ~]# sh b.sh
.
b.sh
[[email?protected] ~]# sh /root/b.sh
/root
b.sh
4.$? 获取执行上一个指令的返回值(0为成功,非零为失败)
2 权限拒绝 1~125 表示运行失败,脚本命令、系统命令错误或参
数传递错误; 126 找到该命令了,但是无法执行。 127 未找到要
运行的命令; 128 命令被系统强制结束。
提示:在脚本调用,一般用exit 0,函数return 0.

5.$$ 获取当前shell的进程号(PID)。
[[email?protected] ~]# cat a.log |cut -c1-4|xargs kill

[[email?protected] ~]# cat all.sh
echo ‘1.‘ $0
echo ‘2.‘ ‘$1‘=$1 ‘$2‘=$2 "$3=$3"
echo ‘3.‘ $*
echo ‘4.‘ $#
echo ‘5.‘ $$
sleep 2 &
echo ‘6.‘ $!
echo ‘7.‘ $?
echo ‘8.‘ [email?protected]
echo ‘9.‘ $_
[[email?protected] ~]# sh all.sh xiaoming hanmei lilei

  1. all.sh
  2. $1=xiaoming $2=hanmei $3=lilei
  3. xiaoming hanmei lilei
  4. 3
  5. 3576
  6. 3577
  7. 0
  8. xiaoming hanmei lilei
  9. lilei
    [[email?protected] ~]#

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读