在 bash 中使用 IFS 而不是空格
Using IFS rather than whitepace in bash
有一个非常讨厌的表达想要使用 bash 回应。
表达式为:
'one two --
注:--
后有白色space。
所以我有:
IFS=
echo 'one$IFStwoIFS--$IFS
但结果是:
one$IFStwo$IFS--$IFS
您的方法几乎没有问题:
- 单引号内的变量不会在shell
中展开
- 在字符串
one$IFStwo$IFS--$IFS
中,$IFS
的第一个实例将不会展开,因为 $IFS
旁边有字符串 two
,所以它会尝试展开 不存在的变量 $IFStwo
.
$IFS
的默认值为 $' \t\n'
您可以使用:
echo "one${IFS}two$IFS--$IFS"
这将扩展为(cat -A
输出):
one ^I$
two ^I$
-- ^I$
有一个非常讨厌的表达想要使用 bash 回应。
表达式为:
'one two --
注:--
后有白色space。
所以我有:
IFS=
echo 'one$IFStwoIFS--$IFS
但结果是:
one$IFStwo$IFS--$IFS
您的方法几乎没有问题:
- 单引号内的变量不会在shell 中展开
- 在字符串
one$IFStwo$IFS--$IFS
中,$IFS
的第一个实例将不会展开,因为$IFS
旁边有字符串two
,所以它会尝试展开 不存在的变量$IFStwo
. $IFS
的默认值为$' \t\n'
您可以使用:
echo "one${IFS}two$IFS--$IFS"
这将扩展为(cat -A
输出):
one ^I$
two ^I$
-- ^I$