Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux变量/数组分配中的Bash脚本_Linux_Bash_Scripting - Fatal编程技术网

Linux变量/数组分配中的Bash脚本

Linux变量/数组分配中的Bash脚本,linux,bash,scripting,Linux,Bash,Scripting,我想让我的shell脚本类似于在快餐店点菜。 但是,我不知道如何设置数组来确定客户希望订购的饮料的大小。我的尺码如下: small=12oz medium=16oz large=20oz xlarge =24oz 我把我的shell脚本编程为读取客户输入的$size,但我不知道如何在客户声明其大小时将“small”一词翻译成oz数量。我打算使用eval“$size=“`选项,但我应该设置什么使其可以变化?x是否足够 谢谢!尝试关联查找 $: declare -A drink=( [sm

我想让我的shell脚本类似于在快餐店点菜。 但是,我不知道如何设置数组来确定客户希望订购的饮料的大小。我的尺码如下:

small=12oz
medium=16oz
large=20oz
xlarge =24oz
我把我的shell脚本编程为读取客户输入的$size,但我不知道如何在客户声明其大小时将“small”一词翻译成oz数量。我打算使用
eval
“$size=“`选项,但我应该设置什么使其可以变化?x是否足够


谢谢!

尝试关联查找

$: declare -A drink=(
    [small]=12oz
    [medium]=16oz
    [large]=20oz
   )
$: choice=medium
$: echo "${drink[$choice]}"
16oz
$: drink[xlg]=32oz
$: choice=xlg
$: echo "${drink[$choice]}"
32oz

不过,请注意语法,这有点麻烦。

尝试关联查找

$: declare -A drink=(
    [small]=12oz
    [medium]=16oz
    [large]=20oz
   )
$: choice=medium
$: echo "${drink[$choice]}"
16oz
$: drink[xlg]=32oz
$: choice=xlg
$: echo "${drink[$choice]}"
32oz

不过,请注意语法,这有点麻烦。

您可以使用变量间接寻址(检索名称指定为$size值的变量的值),但更好的做法是使用关联数组,您会发现可以使用变量间接寻址(检索名称指定为$size值的变量的值),但更好的做法是使用关联数组,您会发现,您需要首先将
size
声明为关联数组,或者它默认为索引数组。请注意,在您的示例中,
${size[$choice]}
输出20oz,而不是预期的16oz,因为您的每个分配设置(并重置)
大小[0]
因为字符串在算术上下文中作为变量名进行计算。非常感谢!我很难理解数组的概念。我知道如何设置,但我对如何将其调用回我的程序感到困惑。我正在学习如何编写脚本,有很多方法可以完成这项工作!您需要声明
size
首先作为关联数组,或者默认为索引数组。请注意,在您的示例中,
${size[$choice]}
输出20oz,而不是预期的16oz,因为您的每个赋值设置(并重置)
size[0]
因为字符串在算术上下文中作为变量名进行计算。非常感谢!我很难理解数组的概念。我知道如何设置,但我对如何将其调用回我的程序感到困惑。我正在学习如何编写脚本,有很多方法可以完成这项工作!