今天王靖同学问起这个问题,我本以为很简单一个小问题,结果当写出脚本后,发现有问题。后来还是查资料得到结果。
要求: 写一个脚本,把所有的参数都遍历一遍。
过程:
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. 一开始,觉得写个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
说明: 这个$@很关键,它表示所有的参数组合在一起的情况,如下例:
- [root@VM_193_117_centos ~]# cat 1.sh
- #!/bin/bash
- echo $@
- for i in $@; do
- echo $i
- done
- [root@VM_193_117_centos ~]# sh 1.sh ls vi tss
- ls vi tss
- ls
- vi
- tss
编辑回复