我試圖grep行匹配某種模式,然後嘗試打印這些匹配的行。Bash腳本:從文件打印grep'd行
#!/bin/bash
file=/path/to/some/file
pattern=socket
if [ -f $file ]; then
lines=`grep -i "$pattern" $file`
# Case 1
for x in $lines; do # <--- isn't this an array
echo "$x"
done
# Case 2
while read -r line_a; do
echo "$line_a"
done <<< "$lines"
fi
輸出:
情況1:代替完整線,從這些行各個字印在每個新行。
案例2:單行打印。
問:
爲什麼不區分1個打印整條生產線在同一行,而不是從該行對每個新行打印個人的話嗎?是不是$lines
字符串數組(在我的情況下)?
沒有它不是一個數組,通過使用反引號將'grep'的結果捕獲爲一個大字符串。我猜測for循環將空白視爲記錄分隔符,因此每個單詞都被視爲一個元素 – Pankrates 2015-04-05 01:45:53