在bash
中展开变量时,我通常使用${var}
,但是我也经常看到"$var".
--我所说的变量是用来在脚本中将参数传递给bash函数的。我不需要他们,也不一定希望他们使用球状或其他花哨的东西。它只是用来传递字符串。那么,哪种扩张更适合这种情况呢?
发布于 2013-12-20 09:38:49
这些是相互正交的,您需要理解这两个方面:
这是Bash中的一个很大的主题,它会给细微的big带来无尽的机会,所以这里的任何解释都是不完整的。考虑到这一点:
${var}
相反,$var
将变量$var
与任何周围的代码分离开来。例如:
$ var=foo $ echo $variable
这将不会输出任何内容(除非还定义了变量variable
)。
$ echo ${var}可执行再说一次,这只是表面上的问题。如果您想要编写可靠的Bash脚本,那么链接的文章(以及几乎所有的wiki)都是学习的好地方。
发布于 2013-12-20 09:33:53
这不是选择一种或另一种的问题,引号总是值得推荐的,而在某些情况下则需要括号。
引号保持格式,而花括号用于执行可变展开和一些边缘情况:
引证的重要性
如果我们不引用变量调用,格式就会丢失。
$ myvar="hello
how are you"
$ echo $myvar
hello how are you
$ echo "$myvar"
hello
how are you
另外,假设您将文件名存储在变量中。如果文件名碰巧有空格,则除非引用文件名,否则无法正确使用该文件名。
$ echo "hello" > "my file"
$ ls -ltr
-rw-r--r-- 1 me me 0 Dec 20 10:41 my file
$ file="my file"
$ cat $file
cat: my: No such file or directory
cat: file: No such file or directory
$ cat "$file"
hello
花括号的重要性
如果我们不使用花括号,那么在调用变量之后,如果不添加空格,就不能使用变量,然后使用值。
$ myvar="hello"
$ echo ${myvar}1
hello1
$ echo $myvar1
$
发布于 2013-12-20 09:37:38
${var}是更好的选择,因为您可以清楚地看到变量的名称。
例如:
var = "hello"
echo ${var}_1
hello_1
echo $var_1
echo $var_1
不显示任何内容,因为bash认为您试图访问变量var_1
。
https://stackoverflow.com/questions/20700354
复制相似问题