我尝试使用bash脚本将制表符分隔的行(也有空格)读入变量。我遇到的问题是尝试无法正确读取带空格的令牌。我尝试设置IFS =' \ t'但它没有用。
这是我尝试的代码 -
IFS='\t'
while read -r var1 var2 ;
do
echo "$var1"
echo "$var2"
done < cat sample.txt
Sample.txt内容:
variable1 This is variable2
预期产出:
var1 = variable1
var2 = This is variable2
不确定我错过了什么。任何帮助表示赞赏。
答案 0 :(得分:2)
您必须使用IFS=$'\t'
才能使其正常运行。
bash
不要解释字符串文字中的转义序列。 $'somestring'
是带有转义序列的字符串文字的语法。与'\t'
不同,$'\t'
实际上是一个标签。
来自
man bash
:
$'string'
形式的单词是专门处理的。这个词扩大了 to string,反斜杠转义字符被替换为 ANSI C标准。
此外,您不需要< cat file
。
#!/bin/bash
while IFS=$'\t' read -r var1 var2
do
echo "$var1"
echo "$var2"
done < sample.txt