假设我有以下脚本:
for arg in "$var1" "$var2" "$var3" "$varN" ; do
echo $arg;
done;
我想要完成的是do
如果我正在迭代并且我在第一个位置参数上。我认为它会是这样的:
for arg in "$var1" "$var2" "$var3" "$varN" ; do
if [ *some condition* ]; then
*action*
else
if [ *first positional arg* ];
echo *first positional argument*
fi
done;
初学者用bash所以点亮我吧:)。
答案 0 :(得分:0)
有很多方法可以解决这个问题。您可以在循环之前处理$ var1或添加如下所示的条件:
handled_first=false
for arg in "$var1" "$var2" "$var3" "$varN" ; do
if ! $handled_first; then
# do stuff
handled_first=true
continue
fi
# other stuff
done
答案 1 :(得分:0)
如果我有这个权利,你想在传递给脚本的第一个参数上做一件事,而在其他事件上做另一件事:
echo $1
for arg in "${@:2}"; do
*action*
done
将echo $1
替换为您想要为第一个参数发生的任何内容。 "${@:2}"
是从第二个开始的所有参数的数组,因此您可以将其用于其他操作。
答案 2 :(得分:0)
将第一个位置参数分配给变量。然后使用shift
将其从位置参数中删除,并循环遍历参数。
firstarg=$1
# do stuff with $firstarg
shift # remove first arg
for arg; do
echo "$arg"
done