【问题标题】:Meaning of @ in bash scripts [duplicate]bash脚本中@的含义[重复]
【发布时间】:2017-10-13 23:58:31
【问题描述】:

下面代码摘自mariadb docker image entrypoint中的@是什么意思

...
SOCKET="$(_get_config 'socket' "$@")"
"$@" --skip-networking --socket="${SOCKET}" &
pid="$!"

mysql=( mysql --protocol=socket -uroot -hlocalhost --socket="${SOCKET}" )

for i in {30..0}; do
    if echo 'SELECT 1' | "${mysql[@]}" &> /dev/null; then
        break
...

很高兴获得对良好手册/bash 参考的参考,因为在 google 中搜索 bash 中的 @ 含义无法产生良好的结果。

【问题讨论】:

标签: bash


【解决方案1】:

GNU man bash 页面是一个很好的起点

@

($@) 展开为位置参数,从一开始。当扩展出现在双引号内时,每个参数都扩展为一个单独的单词。也就是说,"$@" 等价于 "$1" "$2" ...。如果双引号扩展出现在一个单词中,则第一个参数的扩展与原始单词的开头部分连接,最后一个参数的扩展与原始单词的最后部分连接。当没有位置参数时,"$@"$@ 扩展为空(即,它们被删除)。

一个演示相同的小例子,

function foo() {
    printf "%s\n" "$@"
}

foo 1 2 3

会打印

1
2
3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2017-04-07
    • 2020-04-02
    • 2012-09-09
    相关资源
    最近更新 更多