有多少种方法可以在bash中获得变量值?

时间:2010-03-27 13:58:58

标签: bash syntax

我找到了这两个:

[root@~]# echo $i;
2
[root@~]# echo ${i};
2

4 个答案:

答案 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 parametersparameter 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}”语法。