我一直在嘗試在 bash 循環之外創建一個文件,我成功地使用以下程式碼生成了該文件
for ((i = 0; i <= 5; i++)); do
for ((j = i; j <= 5; j++)); do
echo -e "$i $j" >> numbers.txt
done
done
但是我希望我的結果以以下方式顯示
01
02
03
ETC。
但我得到的結果與此類似
0 0 1 0 2 0 3 0 4 0 5 1 1 1 2 1 3 1 4 1 5 2 2 2 3 2 4 2 5 3 3 3 4 3 5
我該如何解決這個問題?
答案1
bash
有C 風格的 for 循環,但從風格上來說,當您不需要時使用它們有點奇怪。如果你真的做到了絕對有到,你可能使用錯誤的語言。 (當然,對於這個用例,shell 就可以了。)
一種更像 shell 的方法(在我看來)是:
for i in {0..5}; do for j in $(seq "$i" 5); do echo "$i$j"; done; done
這是另一種方法:
(set {0..5}; for i; do for j; do [ "$i" -le "$j" ] && echo "$i$j"; done; done)
我將它們編寫為適合互動式 shell 的單行程式碼,但它們在結構化形式中同樣可以很好地工作(這通常在腳本中更可取):
set {0..5}
for i; do
for j; do
[ "$i" -le "$j" ] &&
printf '%d%d\n' "$i" "$j"
done
done
答案2
for ((i = 0; i <= 5; i++)); do
for ((j = i; j <= 5; j++)); do
echo -e "${i}${j}\n" >> numbers.txt
done
done
應該做到這一點。我刪除了空格,我更喜歡{}
在變數周圍使用 ' 並\n
放入新行。