1. $# 是传给脚本的参数个数
  2. $ 是脚本本身的名字
  3. $ 是传递给该shell脚本的第一个参数
  4. $ 是传递给该shell脚本的第二个参数
  5. $@ 是传给脚本的所有参数的列表
  6. $* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9
  7. $$ 是脚本运行的当前进程ID
  8. $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
  1. 区别:@*
  • 相同点:都是引用所有参数
  • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数(分别存储在12 3)则"*" 等价于 “12 3"(传递了一个参数);而“@" 等价于 "1""2" "$3"(传递了三个参数)

例子一:

  1. ##dels.sh
  2. echo "number:$#"
  3. echo "scname:$0"
  4. echo "first :$1"
  5. echo "second:$2"
  6. echo "argume:$@"
  7. echo "show parm list:$*"
  8. echo "show process id:$$"
  9. echo "show precomm stat: $?"

执行结果为:

  1. [@jihite]$ sh del.sh
  2. number:
  3. scname:del.sh
  4. first:
  5. second:
  6. argume:
  7. show parm list:
  8. show process id:
  9. show precomm stat:

例子二:

  1. #!/bin/sh
  2. num=$#
  3. name=$
  4. echo "number:$num"
  5. echo "scname:$name"
  6. echo $
  7. echo $
  8. echo $
  9.  
  10. for ((i=; i<$num; i++))
  11. do
  12. echo "$i"
  13. done
  14.  
  15. echo "argume:$@"
  16. for key in $@
  17. do
  18. echo $key
  19. done
  20. echo "-----------------"
  21. for key in "$@"
  22. do
  23. echo $key
  24. done
  25. echo "-----------------------------"
  26. for key2 in $*
  27. do
  28. echo $key2
  29. done
  30. echo "-----------------"
  31. for key2 in "$*"
  32. do
  33. echo $key2
  34. done
  35.  
  36. echo "show process id:$$"
  37. cho
  38. echo "show precomm stat: $?"

执行结果:

  1. [@jihite]$ sh del.sh a b
  2. number:
  3. scname:del.sh
  4. del.sh
  5. a
  6. b
  7.  
  8. argume:a b
  9. a
  10. b
  11. -----------------
  12. a
  13. b
  14. -----------------------------
  15. a
  16. b
  17. -----------------
  18. a b
  19. show process id:
  20. del.sh: line : cho: command not found
  21. show precomm stat:

问题:

echo #0 #1 能不能用 $i 表示呢?


原文地址 -> 戳我

随机推荐

  1. mysql引擎整理

    MySQL数 据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引 擎:ISAM.MYISAM和HEAP.另外两种类型I ...

  2. Linux和Windows远程桌面互连

    1.Ubuntu 连 windows    W.1 Windows设置允许远程桌面连接    U.1 Ubuntu设置 apt-get install rdesktop    U.2 Ubuntu连接 ...

  3. 内存映射MMAP和DMA【转】

    转自:http://blog.csdn.net/zhoudengqing/article/details/41654293 版权声明:本文为博主原创文章,未经博主允许不得转载. 这一章介绍Linux内 ...

  4. editPlus,3.7V 注册码

    editPlus,3.7V 注册码: username:linzhihui password:5A2B6-69740-D9CDE-79702-C9CCD

  5. 怎么使用Docker搭建PHP开发环境呢?

    在Docker流行之前,要搭建开发环境通常有两种选择:一种是使用wamp.xampp.mamp等集成开发环境安装包,另外一种就是使用普通虚拟机来安装linux服务器,然后通过下载一键安装包(如:lnm ...

  6. js实现通用的微信分享组件示例

    一.可定义的信息 1.分享时显示的LOGO:2.分享LOGO的宽度:3.分享LOGO的高度:4.分享出去显示的标题(默认调用网页标题):5.分享出去显示的描述(默认调用网页标题):6.分享链接(默认为 ...

  7. Human Gene Functions

    Human Gene Functions Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18053 Accepted: 1004 ...

  8. Safecracker 分类: HDU 搜索 2015-06-25 21:12 12人阅读 评论(0) 收藏

    Safecracker Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...

  9. Color Me Less 分类: POJ 2015-06-10 18:24 11人阅读 评论(0) 收藏

    Color Me Less Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 31693   Accepted: 15424 D ...

  10. Epoll,Poll,Select模型比较

    http://blog.csdn.net/liangyuannao/article/details/7776057 先说Select: 1.Socket数量限制:该模式可操作的Socket数由FD_S ...