分類

展開全部 | 收合全部

分類

展開全部 | 收合全部

【Bash 基本語法 #4】bash for loop 實作範例程式碼 (備註:「@」, 「*」的差別)

for numeric (次數 for-loop)

#!/bin/bash
# numeric
for i in {1..10}
do
    echo $i
done

for arr (arr for-loop)

#!/bin/bash
# array elements
arr=("test1" "test2" "test3")

for elements in ${arr[@]}; do
    echo $elements
done

或是

#!/bin/bash
# array elements
arr=("test1" "test2" "test3")

for elements in ${arr[*]}; do
    echo $elements
done

備註:「@」, 「*」的差別

基本上這兩個大同小異,只差在有沒有被 Quote 「””」才會出現差別。

範例

#!/bin/bash

# 定義一個包含空格的元素陣列
arr=("apple banana" "cat dog" "egg fox")

# 使用未引用的 $arr[*] 和 $arr[@], 展開結果相同
echo "Unquoted *: $arr[*]"
echo "Unquoted @: $arr[@]"

# 使用引用的 "${arr[*]}" 和 "${arr[@]}", 展開結果相同
echo "Quoted *: ${arr[*]}"
echo "Quoted @: ${arr[@]}"

# 使用引用的 "${arr[*]}" 和 "${arr[@]}" 在迴圈中, 結果不同
echo "Loop with quoted *:"
for i in "${arr[*]}"; do
    echo "$i"
done

echo "Loop with quoted @:"
for i in "${arr[@]}"; do
    echo "$i"
done

結果

這邊我們可以注意換行的方式,如果使用了 「${arr[*]}」搭配 Quote
那會變成一串字 (被組成了單一個結果),因此如果使用 for 會跑不出我們要的結果。

我自己的記法

為了怕混淆,我就記要使用 for loop 時,沒事不要 Quote,
另外使用「@」,可以避免沒有展開的結果 (但這些其實有搞清楚就沒事了XD)

Reference

Howard Weng
Howard Weng

我是 Howard Weng,很多人叫我嗡嗡。這個網站放了我的各種筆記。希望這些筆記也能順便幫助到有需要的人們!如果文章有幫助到你的話,歡迎幫我點讚哦!
另外,因為定位是「個人的隨手筆記」,有些文章內容「⚠️可能我理解有誤⚠️」或「?只寫到一半?」,如果有發現這樣的情況,歡迎在該文章的最下面留言提醒我!我會儘快修正或補上!感謝大家的建議與幫忙,讓網站能變得更好?

文章: 889

★留個言吧!內容有誤或想要補充也歡迎與我討論!