【发布时间】:2018-07-30 14:03:40
【问题描述】:
以下代码中的read 命令仅解析输入的第一行。但当IFS 设置为逗号或换行符以外的任何其他符号时,它可以正常工作。
u="*
john
dan"
IFS=$'\n';read -ra q <<< "$u"
for j in "${q[@]}"
do
echo "drop user $j"
done
输出只是:
drop user *
我期待的是:
drop user *
drop user john
drop user dan
请注意,输入中的第一项是星号。因此,如果我使用下面的代码进行拆分,那么星号会扩展到目录中的文件列表。
IFS=$'\n'; q=($u); unset IFS;
输出:
drop user abc
drop user test.sh
drop user john
drop user dan
上面的代码有什么问题?如何纠正它以获得预期的输出?
【问题讨论】:
标签: bash shell parsing newline ifs