我有这个输入文件庆典与阵列双引号行为的值
first line
second line
wow! something
the last line
我填与线的阵列与“行”字白衣这个脚本
#!/bin/bash
IFS_backup=$IFS
IFS=$'\n'
lines=($(grep "line" "$1"))
IFS=IFS_backup
i=0
for line in "${lines[@]}"
do
echo $line
echo "$line"
done
我得到这个输出
first line
first line
se ond line
second line
the l st line
the last line
这里发生了什么?我认为引号会将单词限制在一个范围内,从而创建一个字符串。这里缺少的报价导致丢失随机字符...
谢谢!
注意:我知道还有其他方法用文件行填充数组。顺便说一句,这只是一个例子;我的实际数组以更棘手的方式填充,但引号行为是相同的。我想知道为什么这个脚本有被冷落的行为。
使用'IFS = “$ IFS_backup”'(注意'$') – jm666 2014-09-05 08:24:31
哎呀...感谢我的斑点(哑)错误。那么,除了功能之外,当IFS错误时会发生什么? – 2014-09-05 08:32:11
'IFS_backup'中的单个字符充当'IFS'。所以'echo second line'被视为'echo'se“”ond line“',而不是你的期望 - 'echo”second“”line“'。 – anishsane 2014-09-05 08:36:20