【发布时间】:2020-07-04 12:29:37
【问题描述】:
当我使用$1时,将$PATH传递给函数只会在控制台输出第一行:
format() {
printf "%s\n" $1 | tr ":" "\n" | nl
}
$ format $PATH
1 /Applications/Visual\
当我把$1改成$@时,$PATH的所有内容都可以输出了:
format() {
printf "%s\n" $@ | tr ":" "\n" | nl
}
$ format $PATH
1 /Applications/Visual\
2 Studio\
...
我看到GNU Bash的文档说$1代表第一个参数,$@代表所有参数(如果传了多个参数的话),但是这里我明明只传了一个参数$PATH,为什么使用$@获取$PATH的所有内容?
【问题讨论】:
-
参数不是参数;其扩展的结果是。始终引用您的参数扩展。
-
只要使用
nl <<< "${PATH//:/$'\n'}"
标签: bash environment-variables