所以,我想打印满足某些条件的脚本参数:
t1=0
for i in $@; do
if [ $i == "-1" ] || [ $i == "-2" ] || [ $i == "-3" ]; then
t2=$(($t1+2))
echo $i $"$t2"
fi
t1=$(($t1+1))
done
如果我这样调用脚本:
./name_of_script -2 aaa -m bbb -3 ccc -4 ccc -1 ddd
我希望它打印这样的东西:
-2 aaa
-3 ccc
-1 ddd
所以我想打印 -1 、 -2 或 -3 的参数,以及紧随其后的每个参数。但我得到了这个:
-2 2
-3 6
-1 10
我只是不能将 2、6 和 10 变成 $2、$6 和 $10,所以我可以打印脚本的这些参数。
有任何想法吗 ?非常感谢。
执行此类操作的便携式(尽管很危险)方法是通过使用
eval
:在 bash 中,有一种更清洁、更安全的方法,它使用一种称为变量间接的特性
所以在你的情况下
然而,在 shell 脚本中获取下一个位置参数的规范方法是使用
shift
内置函数。例如,你可以这样做尽管如此,你似乎在这里做的是重新发明
getopts
内置:然后