为什么在通过回声运行时反斜杠会消失?

Vil*_*age 6 bash echo backslash

我有这样的代码,它处理CSV文件:

#!/bin/bash
while read line
do
    variable=$(echo $line | awk -F, '{print $2}')
    echo $variable
 done < ./file.csv
Run Code Online (Sandbox Code Playgroud)

如果CSV文件包含any \,则在运行此命令时,输出文本不会显示\.

如何确保\不删除?

Zas*_*ash 15

这种行为的原因是read内置使用\转义字符.该-r标志禁用此行为.

所以,这应该工作:

while read -r line
  variable=$(echo $line | awk -F, '{print $2}')
  echo $variable
done < ./file.csv
Run Code Online (Sandbox Code Playgroud)

你还应该放置"..."$(...)变量这样的东西,比如

variable="$(command)"
echo "$variable"
Run Code Online (Sandbox Code Playgroud)

  • 另外,可以使用`cut -d,-f2`代替`awk`命令. (2认同)