【发布时间】:2017-10-24 02:35:46
【问题描述】:
#!/bin/bash
show="ls -al /"
IFS=$'\n'
$show
结果类似于bash: ls -al /: No such file or directory。
shell 无法返回预期结果。
如果我将 IFS 更改为 $' \n'(注意我添加了一个空格),就可以了。
我对IFS了解不多,谁能解释一下?
【问题讨论】:
#!/bin/bash
show="ls -al /"
IFS=$'\n'
$show
结果类似于bash: ls -al /: No such file or directory。
shell 无法返回预期结果。
如果我将 IFS 更改为 $' \n'(注意我添加了一个空格),就可以了。
我对IFS了解不多,谁能解释一下?
【问题讨论】:
第一种情况:
show="ls -al /"
IFS=$'\n'
$show
整个字符串ls -al / 被shell 视为命令名,因为IFS 中没有空格,并且变量中的空格不会导致分词。就像把命令写成“$show”一样,完全禁止分词。
在第二种情况下,确实会发生分词,因为空格是 IFS 的一部分。
另见:
【讨论】:
a:1 \n b:2 我不知道用 bash 读取它的好方法,你有什么好主意吗?