相关疑难解决方法(0)

位置参数中的分词

考虑以下示例:

IFS=:
x="a   :b"   # three spaces
echo ["$x"]  # no word splitting
# [a   :b]   # as is
echo [$x]    # word splitting 
# [a    b]   # four spaces
Run Code Online (Sandbox Code Playgroud)

分词识别单词"a "(三个空格)和"b",用冒号分隔,然后echo用中间的空格连接单词。
但是,当使用 的值$x作为函数参数时,我发现很难解释结果。

args(){ echo ["$*"];}
args a   :b  # three spaces
# [a::b]
Run Code Online (Sandbox Code Playgroud)

和:

args(){ echo [$*];}
args a   :b  # three spaces
# [a  b]     # two spaces
Run Code Online (Sandbox Code Playgroud)

$*扩展为所有位置参数组合的值。此外,"$*"相当于"$1c$2",其中c是 IFS 变量值的第一个字符。

args(){ …
Run Code Online (Sandbox Code Playgroud)

parameter variable-substitution arguments variable bash-expansion

7
推荐指数
1
解决办法
1029
查看次数