Bash
提示並從使用者那裡讀取兩個整數的 Bash shell 腳本程序。
好的,所以我一直試圖解決這個問題一段時間,但我左右都出現了錯誤。這是我第一次嘗試學習基礎知識。所以任何建議都會有所幫助!
問題:我正在嘗試編寫一個 Bash shell 腳本程序,它提示並從使用者那裡讀取兩個整數。假定第二個參數大於第一個參數。程序的輸出是從第一個數字開始到第二個數字結束的數字計數。
換句話說,輸出將如下所示:
Please enter the first number: 3 Please enter the second number, larger than the first: 6 3 4 5 6
好了,這就是我目前所擁有的~
read -p "Please Enter the first number : " n1 echo "$n1" read -p "Please Enter the second number, larger than the first : " n2 echo "$n2" FIRSTV=0 SECONDV=1 if [ 1 -gt 0] then count=$((FIRSTV-SECONDV)) echo $COUNT fi
如果你可以使用
seq
,你可以這樣做:read -p "Please Enter the first number : " n1 echo "$n1" read -p "Please Enter the second number, larger than the first : " n2 echo "$n2" seq "$n1" "$n2"
如果您必須完全在 shell 中執行此操作並且可以使用現代 shell,如,
bash
等(但不是或或類似嚴格的 POSIX shell),您可以將命令替換為:ksh``zsh``ash``dash``seq
eval "printf '%s\n' {$n1..$n2}"
您需要使用
eval
第二個版本,因為 bash/ksh/etc 序列需要像 的實際整數{1..5}
,而不是像{$n1..$n2}
.eval
擴展變數,以便在{...}
序列中使用它們的實際值。如果你想用一個循環來做,沒有花哨的 bash/ksh/etc 功能,你可以用類似的東西替換
seq
or行:eval
c="$n1" while [ "$c" -le "$n2" ] ; do echo "$c" c=$((c+1)) done
這適用於任何與 POSIX 兼容的 shell,包括
dash
andash
,以及bash
等。