bash – 即使使用双引号也会发生单词拆分
根据
http://tldp.org/LDP/abs/html/quotingvar.html
但是,我有 0> /bin/bash --version GNU bash,version 4.3.11(1)-release (x86_64-pc-linux-gnu) [...] 1> cat inspect.sh #!/bin/bash echo "first argument is $1" echo "second argument is $2" 2> cat test.sh #!/bin/bash set -x ./inspect.sh "hello $@" 3> ./test.sh alice bob + ./inspect.sh 'hello alice' bob first argument is hello alice second argument is bob 4> ./test.sh "alice bob" + ./inspect.sh 'hello alice bob' first argument is hello alice bob second argument is 我想知道为什么3>和4>有不同的结果?如何修改test.sh让3>具有与4>相同的输出 解决方法
答案是$@很特别.
从Bash Reference Manual部分
特别: >当扩展发生在双引号内时,每个参数都会扩展为单独的单词. 和 >如果在一个单词中出现双引号扩展,则第一个参数的扩展与原始单词的开头部分连接,最后一个参数的扩展与原始单词的最后一部分连接. 哪个组合让你“hello”合并到第一个参数并且“”合并到最后一个参数但是每个参数都扩展为它自己的单词. 如果要将所有参数扩展为一个单词,则需要使用$*.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |