【问题标题】:Using IFS rather than whitepace in bash在 bash 中使用 IFS 而不是空格
【发布时间】:2018-06-02 09:55:45
【问题描述】:

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

表达式为:

'one two -- 

注意:--后面有空格。

所以我有:

IFS=
echo 'one$IFStwoIFS--$IFS

但结果是:

one$IFStwo$IFS--$IFS

【问题讨论】:

标签: bash echo ifs


【解决方案1】:

您的方法几乎没有问题:

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

你可以使用:

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

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

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

【讨论】:

  • 试试这个:( IFS=' ' && echo "<one${IFS}two$IFS--$IFS>"; )
  • 好...这工作:IFS=' ';echo$IFS"'or${IFS}true$IFS--$IFS"。赦免。如果我用IFS=' ' 替换其他东西。我的意思是我想用IFS=' ' 中的空格替换其他东西。我该怎么办/
  • 没有得到,但( IFS=':'; echo "<one${IFS}two$IFS--$IFS>"; ) 也可以正常工作。
  • 我需要一个其他字符而不是空格,但作为空格工作......当我运行 bash 时,我需要隐藏空格
  • 非常感谢您对我的支持。我的意思是我可以在 IFS=' ' 中使用什么特殊字符来代替空格?
猜你喜欢
  • 2018-12-05
  • 2022-01-24
  • 2018-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多