次のスクリプトでファイルを処理しようとすると、各行の最初の文字にアスタリスクを含むテキストファイルがあります。
while read line; do
out=$(echo $line | awk '{ print $3 }')
echo $out
done < file_with_asterisks
私が望む3番目の列の代わりに、現在の作業ディレクトリのファイルを印刷しています。
アスタリスクを削除すると問題が解決したので、それはglobbingであることがわかりました。
bashにアスタリスクをワイルドカードの代わりにテキストとして処理させる方法は?
答え1
変数の周りに引用符を入れる必要があります。
while IFS= read -r line; do
out=$(echo "$line" | awk '{ print $3 }')
echo "$out"
done < file_with_asterisks
あなたの場合、拡張echo $line
(各行の最初のアスタリスクの後にスペースがあると仮定します)