当前位置:   article > 正文

shell脚本中$#、$*、$@、$?、$0-n等含义一次性搞明白!!!_shell脚本中$@

shell脚本中$@

一、Shell脚本变量的含义

1、$#:表示执行脚本传入参数的个数

2、$*:表示执行脚本传入参数的列表(不包括$0)

3、$$:表示进程的id;Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)

4、$!:Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)

5、$@:表示获取执行脚本传入的所有参数

6、$0:表示执行的脚本名称

7、$1:表示第一个参数

8、$2:表示第二个参数

9、$?:表示脚本执行的状态,0表示正常,其他表示错误

二、$*和$@的差异

在shell中,$@和$*都表示命令行所有的参数(不包含$0),但是$*将命令行所有的参数看成一个整体,而$@则区分各个参数

Demo 脚本示例:

  1. cat ./tmp/shll_test/test.sh
  2. #!/bin/sh
  3. MY_SHELL_PATH=`dirname $0`
  4. echo "print shell script location:"
  5. echo ${MY_SHELL_PATH}
  6. echo "===================================="
  7. echo "enter shell script location:${MY_SHELL_PATH}"
  8. cd `dirname $0`
  9. echo "list current directory content:"
  10. ls -lh
  11. echo "===================================="
  12. echo "shell script name=${0}"
  13. echo "===================================="
  14. echo "first args=${1}"
  15. echo "===================================="
  16. echo "second args=${2}"
  17. echo "===================================="
  18. echo "arguments number=$#"
  19. echo "===================================="
  20. echo "arguments list content=$@"
  21. echo "===================================="
  22. echo "arguments list content=$*"
  23. echo "===================================="
  24. echo "the process id is " "$$"
  25. echo "===================================="
  26. echo "the shell execute return value is " "$?"
  27. echo "===================================="
  28. echo "the all paramters:"
  29. for i in "$@"
  30. do
  31. echo $i #循环$#次
  32. done
  33. echo "===================================="
  34. echo "the all paramters:"
  35. for i in "$*"
  36. do
  37. echo $i
  38. done
  39. echo "===================================="

测试结果 

  1. [root@t4-algo-7 /]# pwd
  2. /
  3. [root@t4-algo-7 /]# ll
  4. total 76
  5. lrwxrwxrwx. 1 root root 7 Nov 29 2018 bin -> usr/bin
  6. dr-xr-xr-x. 5 root root 4096 Nov 29 2018 boot
  7. drwxr-xr-x 19 root root 3120 Dec 29 10:05 dev
  8. drwxr-xr-x. 84 root root 4096 Jan 12 15:29 etc
  9. drwxr-xr-x. 7 root root 4096 Dec 31 12:00 home
  10. lrwxrwxrwx. 1 root root 7 Nov 29 2018 lib -> usr/lib
  11. lrwxrwxrwx. 1 root root 9 Nov 29 2018 lib64 -> usr/lib64
  12. drwx------. 2 root root 16384 Nov 29 2018 lost+found
  13. drwxr-xr-x. 2 root root 4096 Apr 11 2018 media
  14. drwxr-xr-x. 4 root root 4096 Dec 31 11:02 mnt
  15. drwxr-xr-x. 6 root root 4096 Jan 12 11:53 opt
  16. dr-xr-xr-x 400 root root 0 Jan 7 2020 proc
  17. dr-xr-x---. 22 root root 4096 Jan 12 18:27 root
  18. drwxr-xr-x 27 root root 840 Jan 12 12:01 run
  19. lrwxrwxrwx. 1 root root 8 Nov 29 2018 sbin -> usr/sbin
  20. drwxr-xr-x. 2 root root 4096 Apr 11 2018 srv
  21. dr-xr-xr-x 13 root root 0 Mar 23 2020 sys
  22. drwxrwxrwt. 12 root root 20480 Jan 12 18:34 tmp
  23. drwxr-xr-x. 13 root root 4096 Nov 29 2018 usr
  24. drwxr-xr-x. 19 root root 4096 Nov 29 2018 var
  25. [root@t4-algo-7 shll_test]# pwd
  26. /tmp/shll_test
  27. [root@t4-algo-7 shll_test]# yum install -y tree
  28. [root@t4-algo-7 shll_test]# tree
  29. .
  30. ├── dir1
  31. │ └── dir2
  32. ├── file.txt
  33. └── test.sh
  34. 2 directories, 2 files
  35. [root@t4-algo-7 shll_test]#
  36. [root@t4-algo-7 /]# ./tmp/shll_test/test.sh 1 2 3,4
  37. print shell script location:
  38. ./tmp/shll_test
  39. ====================================
  40. enter shell script location:./tmp/shll_test
  41. list current directory content:
  42. total 8.0K
  43. drwxr-xr-x 3 root root 4.0K Jan 12 18:22 dir1
  44. -rw-r--r-- 1 root root 0 Jan 12 18:22 file.txt
  45. -rwxr-xr-x 1 root root 1.2K Jan 12 18:50 test.sh
  46. ====================================
  47. shell script name=./tmp/shll_test/test.sh
  48. ====================================
  49. first args=1
  50. ====================================
  51. second args=2
  52. ====================================
  53. arguments number=3
  54. ====================================
  55. arguments list content=1 2 3,4
  56. ====================================
  57. arguments list content=1 2 3,4
  58. ====================================
  59. the process id is 6152
  60. ====================================
  61. the shell execute return value is 0
  62. ====================================
  63. the all paramters:
  64. 1
  65. 2
  66. 3,4
  67. ====================================
  68. the all paramters:
  69. 1 2 3,4
  70. ====================================
  71. [root@t4-algo-7 /]#

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/154598
推荐阅读
相关标签
  

闽ICP备14008679号