设置IFS为$'\ n'和$'\ n'之间的区别

时间:2017-10-24 02:35:47

标签: bash shell ifs

#!/bin/bash

show="ls -al /"
IFS=$'\n'
$show

结果类似于bash: ls -al /: No such file or directory

shell无法返回预期的结果。

如果我将IFS更改为$' \n'(注意我添加了一个空格),那就没关系。

我对IFS知之甚少,有人可以解释一下吗?

1 个答案:

答案 0 :(得分:3)

在第一种情况下:

show="ls -al /"
IFS=$'\n'
$show

整个字符串ls -al /被shell视为命令名,因为IFS中没有空格,变量中的空格不会引起单词拆分。将命令编写为“$ show”就可以完全抑制分词。

在第二种情况下,由于空间是IFS的一部分,因此会发生单词拆分。

另见: