例子
while [ -n "$1" ]
do
something
done
Run Code Online (Sandbox Code Playgroud)
我可以写$1代替吗"$1"?user=alexander和和有什么区别
user="alexander"?谢谢
$ var="two words"
$ function num_args() { echo "${#}"; }
$ num_args $var
2
$ num_args "$var"
1
Run Code Online (Sandbox Code Playgroud)
$A 和 "$A" 之间的区别在于将参数传递给程序和函数时如何处理断字。
想象一下适用于文件的脚本(假设移动它们):
$ cat my-move
Run Code Online (Sandbox Code Playgroud)
#! /bin/sh
# my-move
src=${1}
dst=${2}
# ... do some fancy business logic here
mv ${src} ${dst}
Run Code Online (Sandbox Code Playgroud)
$ my-move "some file" other/path
Run Code Online (Sandbox Code Playgroud)
按照现在的代码(没有引号),该脚本已损坏,因为它无法正确处理包含空格的文件路径。
(以下感谢@CharlesDuffy)
另外在处理全局模式时引用问题:
$ var='*'
$ num_args "$var"
1
$ num_args $var
60
Run Code Online (Sandbox Code Playgroud)
或者:
$ shopt -s failglob
$ var='[name]-with-brackets'
$ echo $var
bash: no match: [name]-with-brackets
$ echo "$var"
[name]-with-brackets
Run Code Online (Sandbox Code Playgroud)