將嵌套 for 迴圈的結果輸出到 bash 中的文件

將嵌套 for 迴圈的結果輸出到 bash 中的文件

我一直在嘗試在 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放入新行。

相關內容