Linux
使用帶有讀取命令的 for 循環
#!/bin/bash echo -n "Enter a number >" read number for var in $number do read number echo $var done echo "Go!"
我希望 8-1 中的數字垂直列印並在最後說去。當我只執行程式碼 8 和 Go!列印出來。
使用
seq
:#!/bin/bash echo -n "Enter a number > " read number seq "$number" -1 1 echo "Go!"
輸出:
Enter a number > 8 8 7 6 5 4 3 2 1 Go!
為了稍微改進您的程式碼,您可以將提示輸出到
stderr
:>&2 echo -n "Enter a number > "
或使用以下
-p
選項read
:read -p 'enter a number > ' number
您的程式碼無法按預期工作的原因是
- 讀取循環中每次迭代的數字,以及
- 永遠不要在循環中遞減/遞增數字
while
,或者for
永遠不要為循環迭代創建正確的範圍。在
zsh
中,您可以使用read '?Enter a number > ' printf '%s\n' {1..$REPLY} 'Go!'
這從使用者讀取
REPLY
數據,然後在創建數字列表的大括號擴展中使用該數據(如果使用者輸入了有效數字)。在列表的末尾,我們添加字元串Go!
,然後使用換行符列印所有這些字元串作為分隔符printf
。