Bash
如何在bash的for循環中將輸入參數轉換為整數值?
在我的 bash 腳本中,我嘗試使用數字作為輸入變數
for
for 循環我將腳本執行為./script.sh InputFolder/ Number_of_iterations
Number_of_iterations
該腳本應該在給定的文件夾中執行,並按照變數設置的次數執行 for 循環。但不知何故,我無法將變數設置為整數。這是我在腳本中循環的一個例子:
for i in {1..$(($2))} do echo "Welcome $i times" done
我已經嘗試過雙括號
$(($...))
選項以及雙引號"..."
,但我不斷得到的輸出是Welcome {1..5} times
這讓我覺得,這不是一個整數。在將輸入參數作為整數讀取到腳本中時,我將不勝感激。
您可以通過以下兩種方式執行此操作:
使用與 ksh93 兼容的 shell(ksh93、zsh、bash):
for (( i=1;i<=$2;i++ )) do echo "Welcome $i times" done
這裡我們將 i 設置為 1 並循環,將其遞增直到小於或等於 $2,輸出:
Welcome 1 times Welcome 2 times
在 GNU 系統上使用 POSIX shell:
for i in $(seq "$2") do echo "Welcome $i times" done
該
seq
命令(特定於 GNU)將在單獨的行上輸出從 1 到 $2 中指定的數字的數字。假設您沒有修改$IFS
(預設情況下包含行分隔符),命令替換會將其拆分為盡可能多的元素for
以便循環。