北京SEO

linux中shell 特殊变量$0 $n $* $@ $! $?的详解

2019/10/10/17:46:31  阅读:1695  来源:谷歌SEO算法  标签: SEO工具

我们知道在shell命令中有很多的变量,今天下文要讲到的是特殊变量$0 $n $* $@ $! $?详解,希望下文能帮助到各位朋友哦.

$0:获取当前执行脚本的文件名,包括路径.

  1. [root@testscript]#cat0.sh
  2. #!/bin/bash
  3. echo$0
  4. [root@testscript]#sh0.sh
  5. 0.sh
  6. [root@testscript]#cat0.sh
  7. #!/bin/bash
  8. dirname"$0"
  9. basename"$0"
  10. [root@testscript]#sh/byrd/script/0.sh
  11. /byrd/script
  12. 0.sh

$n:获取当前执行的shell脚本的第N个参数,n=1..9,当n为0时表示脚本的文件名,如果n大于9,用大括号括起来like${10}.

  1. [root@testscript]#catn.sh
  2. #!/bin/bash
  3. echo$1$2${10}
  4. [root@testscript]#shn.shabcdefghijklmn
  5. abj
  6. [root@LAMPscript]#shn.sh{a..z}
  7. abj
  8. [root@testscript]#shn.sh`seq11`
  9. 1210

$*:获取当前shell的所有参数,将所有的命令行参数视为单个字符串.

$@:这个程序的所有参数"$1" "$2" "$3" "...",这是将参数传递给其他程序的最佳方式,因此TA会保留所有内嵌在每个参数里的任何空白.

$#:获取当前shell命令行中参数的总个数。

  1. [root@testscript]#cathashtag.sh
  2. #!/bin/bash
  3. echo"$#"
  4. [root@testscript]#shhashtag.sh
  5. 0
  6. [root@testscript]#shhashtag.sh123
  7. 3
  8. [root@testscript]#shhashtag.sh`seq300`
  9. 300
  10. [root@testscript]#catexample.sh
  11. #!/bin/bash
  12. #Example
  13. if[$#-ne2];then
  14. echo"Error,pleaseentertwoparameters."
  15. exit1
  16. else
  17. echo"Youdidagoodjob."
  18. fi--phpfensi.com
  19. [root@testscript]#shexample.sha
  20. Error,pleaseentertwoparameters.
  21. [root@testscript]#shexample.shab
  22. Youdidagoodjob.
  23. [root@testscript]#shexample.shabc
  24. Error,pleaseentertwoparameters.

$_:代表上一个命令的最后一个参数

$$:代表所在命令的PID

  1. [root@LAMPscript]#catdollar.sh
  2. #!/bin/bash
  3. echo"$$">/tmp/dollar.pid
  4. whiletrue
  5. do
  6. sleep1
  7. done
  8. [root@LAMPscript]#shdollar.sh
  9. ################################################
  10. [root@LAMP~]#cat/tmp/dollar.pid
  11. 1483
  12. [root@LAMP~]#ps-ef|grep1483
  13. root14831453014:58pts/100:00:00shdollar.sh
  14. root15321483014:58pts/100:00:00sleep1
  15. root15341496014:58pts/000:00:00grep1483
  16. [root@LAMP~]#ps-ef|grepdollar
  17. root14831453014:58pts/100:00:00shdollar.sh
  18. root15551496014:58pts/000:00:00grepdollar

$!:代表最后执行的后台命令的PID

$?:代表上一个命令执行是否成功的标志,如果执行成功则$? 为0,否则不为0.

  1. [byrd@LAMPscript]$pwd
  2. /byrd/script
  3. [byrd@LAMPscript]$echo$?
  4. 0#运行成功
  5. [byrd@LAMPscript]$ls/root
  6. ls:cannotopendirectory/root:Permissiondenied
  7. [byrd@LAMPscript]$echo$?
  8. 2#权限拒绝
  9. [byrd@LAMPscript]$hahaha
  10. -bash:hahaha:commandnotfound
  11. [byrd@LAMPscript]$echo$?
  12. 127#未找到该命令
  13. ###########################################
  14. [byrd@LAMP~]$cat/byrd/script/question_mark.sh
  15. #!/bin/bash
  16. #Example
  17. ls-al/root>/dev/null2>&1
  18. if[$?-eq0];then
  19. echo"Userisroot"
  20. else
  21. echo"Theuserisnotroot"
  22. fi
  23. [root@LAMPscript]#shquestion_mark.sh
  24. Userisroot
  25. [root@LAMPscript]#su-byrd
  26. [byrd@LAMP~]$sh/byrd/script/question_mark.sh
  27. Theuserisnotroot

广告内容

linux中shell 特殊变量$0 $n $* $@ $! $?的详解 linux中shell 特殊变量$0 $n $* $@ $! $?的详解 linux中shell 特殊变量$0 $n $* $@ $! $?的详解

相关阅读

热门评论

卢松松博客 卢松松博客

关注创业者、自媒体人和站长的网站

总篇数167

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法