首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"$var“和${var}有什么区别?

"$var“和${var}有什么区别?
EN

Stack Overflow用户
提问于 2013-12-20 09:31:43
回答 3查看 265关注 0票数 1

bash中展开变量时,我通常使用${var},但是我也经常看到"$var". --我所说的变量是用来在脚本中将参数传递给bash函数的。我不需要他们,也不一定希望他们使用球状或其他花哨的东西。它只是用来传递字符串。那么,哪种扩张更适合这种情况呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-20 09:38:49

这些是相互正交的,您需要理解这两个方面:

  • 分词
  • 语录

这是Bash中的一个很大的主题,它会给细微的big带来无尽的机会,所以这里的任何解释都是不完整的。考虑到这一点:

  • ${var}相反,$var将变量$var与任何周围的代码分离开来。例如: $ var=foo $ echo $variable 这将不会输出任何内容(除非还定义了变量variable )。 $ echo ${var}可执行
  • "$var“确保变量的内容不发生分词: $ var ='foo bar‘$ echo $var foo bar $ echo "$var“foo bar

再说一次,这只是表面上的问题。如果您想要编写可靠的Bash脚本,那么链接的文章(以及几乎所有的wiki)都是学习的好地方。

票数 3
EN

Stack Overflow用户

发布于 2013-12-20 09:33:53

这不是选择一种或另一种的问题,引号总是值得推荐的,而在某些情况下则需要括号。

引号保持格式,而花括号用于执行可变展开和一些边缘情况:

引证的重要性

如果我们不引用变量调用,格式就会丢失。

代码语言:javascript
运行
复制
$ myvar="hello
how are you"
$ echo $myvar
hello how are you
$ echo "$myvar"
hello
how are you

另外,假设您将文件名存储在变量中。如果文件名碰巧有空格,则除非引用文件名,否则无法正确使用该文件名。

代码语言:javascript
运行
复制
$ 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

花括号的重要性

如果我们不使用花括号,那么在调用变量之后,如果不添加空格,就不能使用变量,然后使用值。

代码语言:javascript
运行
复制
$ myvar="hello"
$ echo ${myvar}1
hello1
$ echo $myvar1

$
票数 4
EN

Stack Overflow用户

发布于 2013-12-20 09:37:38

${var}是更好的选择,因为您可以清楚地看到变量的名称。

例如:

代码语言:javascript
运行
复制
var = "hello"
echo ${var}_1
hello_1
echo $var_1

echo $var_1不显示任何内容,因为bash认为您试图访问变量var_1

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20700354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档