在bash中使用IFS而不是空格

时间:2018-06-02 09:55:46

标签: bash echo ifs

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

表达式是:

'one two -- 

注意: --后有空格。

所以我有:

IFS=
echo 'one$IFStwoIFS--$IFS

但结果是:

one$IFStwo$IFS--$IFS

1 个答案:

答案 0 :(得分:3)

您的方法几乎没有问题:

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

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

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

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