我有这样的代码,用于处理CSV文件:
#!/bin/bash
while read line
do
variable=$(echo $line | awk -F, '{print $2}')
echo $variable
done < ./file.csv
如果CSV文件包含任何\
,则在运行此命令时,输出文本不会显示\
。
如何确保不删除\
?
答案 0 :(得分:15)
此行为的原因是read
内置使用\
作为转义字符。 -r
标志禁用此行为。
所以,这应该有效:
while read -r line
variable=$(echo $line | awk -F, '{print $2}')
echo $variable
done < ./file.csv
您还应该"..."
围绕$(...)
和变量等内容,例如
variable="$(command)"
echo "$variable"
答案 1 :(得分:1)
bash
的手册页可以说明read
:
反斜杠字符(\)可能是 用于删除下一个字符读取的任何特殊含义 并继续延续。