【问题标题】:User input to specify array name [bash]指定数组名称的用户输入 [bash]
【发布时间】:2015-04-23 04:42:10
【问题描述】:

我刚开始为了好玩而学习 bash/shell,我正在尝试创建一个简单的脚本,它应该接受用户输入,它应该是一个预构建数组的名称,然后是 say 其中的每个项目数组之间有一个暂停。

这是我目前所拥有的:

#!/bin/sh
array=("foo" "bar" "baz")

read -p "Which array should I read to you? " answer

for item in ${answer[@]}
do
    say "$item [[slnc 1000]]"
done

如果您能指出正确的方向,请告诉我!

【问题讨论】:

  • 我试过了,它工作正常(mac env)。包括暂停
  • 您是否将其保存为文件?你用的是什么扩展?你是怎么运行的?任何细节都会有所帮助。另外,如果您在任何数组值中添加空格会发生什么 - 它仍然有效吗?

标签: arrays bash shell scripting user-input


【解决方案1】:

您可以使用这样的变量数组名称访问数组:

#!/bin/bash

array=("foo" "bar" "baz")
read -p "Which array should I read to you? " answer

tmp="$answer"[@];

for item in "${!tmp}"; do
    echo "$item [[slnc 1000]]"
done

然后使用上面的脚本:

bash arr.sh
Which array should I read to you? array
foo [[slnc 1000]]
bar [[slnc 1000]]
baz [[slnc 1000]]

【讨论】:

  • 非常感谢 anubhava,我感觉我在某个地方缺少了一个过渡步骤,现在我学到了一些新东西!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
  • 2012-04-09
  • 2022-11-28
相关资源
最近更新 更多