小编Gue*_*ler的帖子

bash是否在$ {var + ...}内错误地进行了"$ @"扩展?

我目前通过3个炮弹得到2个意见:

$ bash -c 'set bar; set foo${1+ "$@"}; echo "$# $*"'
1 foobar

$ ash -c 'set bar; set foo${1+ "$@"}; echo "$# $*"'
2 foo bar

$ dash -c 'set bar; set foo${1+ "$@"}; echo "$# $*"'
2 foo bar
Run Code Online (Sandbox Code Playgroud)

或者我忽略了一些POSIX定义,它将我的示例呈现为实现定义的行为?

请注意,只有"$ @"似乎会触发差异.以下所有3个shell的工作方式相同:

$ bash -c 'set bar; set foo${1+ $*}; echo "$# $*"'
2 foo bar

$ ash -c 'set bar; set foo${1+ $*}; echo "$# $*"'
2 foo bar

$ dash -c 'set bar; set foo${1+ …
Run Code Online (Sandbox Code Playgroud)

bash shell scripting posix expansion

14
推荐指数
1
解决办法
296
查看次数

标签 统计

bash ×1

expansion ×1

posix ×1

scripting ×1

shell ×1