shell脚本中如何遍历所有的参数

回复 收藏
今天王靖同学问起这个问题,我本以为很简单一个小问题,结果当写出脚本后,发现有问题。后来还是查资料得到结果。

要求: 写一个脚本,把所有的参数都遍历一遍。

过程:
1. 一开始,觉得写个for循环就可以做到:
for i in `seq 1 $#`; do echo $i; done
很显然,这个$i 只是数字,并不是我们想要的参数本身,所以继续改造:
for i in `seq 1 $#`; do echo $"$i"; done
结果依然只是数字,why? $"$i" 竟然不起作用。

2. 无奈之下,借助google吧,最后得到答案

for i in $@; do echo $i; done  

说明: 这个$@很关键,它表示所有的参数组合在一起的情况,如下例:

  1. [root@VM_193_117_centos ~]# cat 1.sh
  2. #!/bin/bash
  3. echo $@
  4. for i in $@; do
  5.     echo $i
  6. done
  7. [root@VM_193_117_centos ~]# sh 1.sh ls vi tss
  8. ls vi tss
  9. ls
  10. vi
  11. tss


2014-12-10 15:08 举报
已邀请:
0

wuhen

赞同来自:

$@  所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。  $#  添加到Shell的参数个数 学习了
0

xiaotuanyu120

赞同来自:

#!/bin/bash
echo $*
for i in $*; do
    echo $i
done
~
=========================
[root@web01 sbin]# sh catvar.sh good qu ni ma de
good qu ni ma de
good
qu
ni
ma
de
0

lyhabc

赞同来自:

$@:表示以空格分隔的所有输入参数或者所有函数参数
$*:所有输入参数或者所有函数参数

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: