bash - 在 bash 中使用 IFS 而不是空格

标签 bash echo ifs

有一个非常讨厌的表达式想要使用 bash 进行回显。

表达式为:

'one two -- 

注意:--后有空格。

所以我有:

IFS=
echo 'one$IFStwoIFS--$IFS

但结果是:

one$IFStwo$IFS--$IFS

最佳答案

您的方法几乎没有问题:

  1. 单引号内的变量不会在 shell 中扩展
  2. 在字符串 one$IFStwo$IFS--$IFS 中,$IFS 的第一个实例将不会扩展,因为您有字符串 two $IFS 旁边,因此它尝试扩展不存在的变量 $IFStwo
  3. $IFS 的默认值为 $'\t\n'

您可以使用:

echo "one${IFS}two$IFS--$IFS"

将扩展为(cat -A 输出):

one ^I$
two ^I$
-- ^I$

关于bash - 在 bash 中使用 IFS 而不是空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50655663/

相关文章:

Bash - 乘法二维矩阵

php - 在 Javascript 中回显 PHP?

javascript - 如何在阿尔弗雷德的 `run script` 工作流程中使用 osascript 回显没有换行符的内容?

bash 变量替换和引用

bash - 在 Bash 中将定界字符串解析为数组 - 为什么 "$var"与 $var 不同,尽管 $var 没有空格?

bash - 尝试在 makefile 中加载模块环境时出错

ruby - 中间人问我是否要在开始新项目时使用 compass

windows - 如何将文本从 Windows 中的 Firefox 复制到 Unix 中的 bash shell?

string - 使用 IFS 在 bash 中将字符串拆分为单个字符

C: IFS System() 漏洞