[英]looping over arguments in bash
在bash中,我可以循環遍歷所有參數$ @。 有沒有辦法獲得當前參數的索引? (這樣我可以參考下一個或前一個。)
與您指定的不完全相同,但您可以通過多種不同的方式迭代參數。
例如:
while test $# -gt 0
do
echo $1
shift
done
您可以遍歷參數號,並使用間接擴展( ${!argnum}
)從中獲取參數:
for ((i=1; i<=$#; i++)); do
next=$((i+1))
prev=$((i-1))
echo "Arg #$i='${!i}', prev='${!prev}', next='${!next}'"
done
請注意, $0
( $1
的“前一個”參數)將類似於“-bash”,而最后一個后面的“next”參數將顯示為空白。
將位置參數復制到數組非常簡單:
$ set -- a b c d e # set some positional parameters
$ args=("$@") # copy them into an array
$ echo ${args[1]} # as we see, it's zero-based indexing
b
並且,迭代:
$ for ((i=0; i<${#args[@]}; i++)); do
echo "$i ${args[i]} ${args[i-1]} ${args[i+1]}"
done
0 a e b
1 b a c
2 c b d
3 d c e
4 e d
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.