当我尝试在如下脚本中处理文件时,我有一个文本文件,其中每行的第一个字符都包含一个星号:
while read line; do
out=$(echo $line | awk '{ print $3 }')
echo $out
done < file_with_asterisks
它正在打印当前工作目录中的文件,而不是我想要的第三列。
删除星号可以解决问题,所以我发现它正在进行通配。
如何让 bash 将星号作为文本而不是通配符?
答案1
您应该在变量周围加上引号:
while IFS= read -r line; do
out=$(echo "$line" | awk '{ print $3 }')
echo "$out"
done < file_with_asterisks
在你的情况下echo $line
扩展(我假设每行的初始星号后面有一个空格)