Bash 在文件中捕获星号

Bash 在文件中捕获星号

当我尝试在如下脚本中处理文件时,我有一个文本文件,其中每行的第一个字符都包含一个星号:

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扩展(我假设每行的初始星号后面有一个空格)

相关内容