我找到了这两个:
[root@~]# echo $i;
2
[root@~]# echo ${i};
2
答案 0 :(得分:1)
以下是除了其他人的答案之外的一些信息。
标量变量可以使用数组语法引用:
name="dennis williamson" # scalar
# These all work the same when there's only one element
echo ${name[@]}
echo ${name[*]}
echo ${name[0]}
您可以通过多种方式显示变量的内容及其他相关信息:
echo "$var"
printf "$var\n"
declare -p var
列出以给定前缀开头的所有变量名称:
echo ${!va*}
echo ${!va@}
此处及以上的*
和@
会影响在双引号时是否将结果展开为单独的单词。
$ array=(red green blue)
$ for color in "${array[@]}"; do echo $color; done
red
green
blue
$ for color in "${array[*]}"; do echo $color; done
red green blue
如果没有双引号,它们会在单独的行上打印颜色,就像使用@
的版本一样。
如果将变量导出到环境中,您可以执行以下操作之一:
export | grep var
declare -x | grep var
set | grep var
env | grep var
您可以在函数中打印所有局部变量的列表:
local
另请参阅有关算术表达式的this SO question以及有关shell parameters和parameter expansion的文档。
答案 1 :(得分:0)
echo ${!var}
echo ${array[$i]}
set -- $var; echo $1 $2
答案 2 :(得分:0)
实际上这两种方式都是相同的。
不同之处在于,一个人在你想要的变量中是非常具体的,另一个是一般的。例如,如果你想打印“2cents”(注意缺少空格),那么扩展你的例子将如下所示:
echo $icents;
由于你没有变量“icents”而失败,但另一个例子是:
echo ${i}cents;
会正确地打印出“2cents”,因为取消引用“$”应用于显式变量“i”,花括号作为变量名称开始和停止的指示符。
它需要额外的输入,但大多数情况下,总是在变量名称周围包含花括号更好。
答案 3 :(得分:0)
正如其他人已经开始描述的那样,有几种不同的方法可以在bash中获取变量值。对于简单变量,当你想要的只是以最安全的方式获得的完整的,未修改的值时,使用“$ {i}”语法。