簡體   English   中英

循環遍歷bash中的參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM