【问题标题】:Difference between set IFS as $'\n' and $' \n'将 IFS 设置为 $'\n' 和 $'\n' 之间的区别
【发布时间】: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了解不多,谁能解释一下?

【问题讨论】:

标签: bash shell ifs


【解决方案1】:

第一种情况:

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

整个字符串ls -al / 被shell 视为命令名,因为IFS 中没有空格,并且变量中的空格不会导致分词。就像把命令写成“$show”一样,完全禁止分词。

在第二种情况下,确实会发生分词,因为空格是 IFS 的一部分。


另见:

【讨论】:

  • 我将 IFS 更改为读取文件的每一行如下:a:1 \n b:2 我不知道用 bash 读取它的好方法,你有什么好主意吗?
猜你喜欢
  • 2019-01-28
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
  • 2016-05-03
  • 1970-01-01
  • 1970-01-01
  • 2016-08-16
相关资源
最近更新 更多