如何在 bash 腳本的 for 迴圈中使用參數變數?

如何在 bash 腳本的 for 迴圈中使用參數變數?

一整天都在為此苦苦掙扎。所以我有一個看起來像這樣的腳本。

終端命令類似於

script.sh ARG1 ARG2 ARG3 ARG4

該腳本如下所示:

totalargs=$#

for ((i=2; i<=totalargs; i+=2)); do
   curl somewebsite.com | grep "$i"
done

我想要實現的是 grep 所有其他參數,但是我似乎無法使用 $i 將參數放入循環中。在循環迭代時,在提供的情況下應該是 2 然後 4。

有任何想法嗎?對於 bash 腳本來說還很陌生,因此非常感謝您的指導。謝謝!

答案1

在 bash 中,您可以使用變數間接

for((i=2;i<=$#;i+=2)); do echo "${!i}"; done

POSIXly,你可以做類似的事情

while [ $# -gt 0 ]; do 
  echo "$2"
  shift; shift
done

curl然而,為每個參數調用一次是相當低效的grep- 我建議修改你解決問題的方法。

相關內容