arrays - 来自用户输入的 Bash 数组键

标签 arrays linux bash shell ubuntu-14.04

所以我有一个 bash 脚本,它将扫描一个目录并在选定的输入上运行一个函数。

    echo -n "
-------------------------------------------------------
            `hostname` Menu
-------------------------------------------------------

Choose your desired Host:
`
i=1
for D in /var/www/*.*/;
    do   
        if [[ -d $D ]]; then
            Hosts[$i]=$D
            echo $i') ' $D
            i=$(($i+1))
        fi
    done
    `
"
read -p "Select: " Input
    Directory="${Hosts[$Input]}";
    ChangePerms;

似乎由于某种原因, key 没有正确地从数组中设置。

Choose your desired Host:
1)  /var/www/example1.com/
2)  /var/www/example2.com/
+ read -p 'Select: ' Input
Select: 1
+ Directory=
+ ChangePerms
+ true

我错过了什么?非常感谢所有帮助!

编辑: 作为旁注,我可以单独运行命令并获得结果。

root@web005:/# i=1
root@web005:/# for D in /var/www/*.*/;
>     do
>         if [[ -d $D ]]; then
>             Hosts[$i]=$D
>             echo $i') ' $D
>             i=$(($i+1))
>         fi
>     done
1)  /var/www/example1.com/
2)  /var/www/example2.com/
root@web005:/# read -p "Select: " Input
Select: 1
root@web005:/# Directory="${Hosts[$Input]}";
root@web005:/# echo $Directory
/var/www/example1.com/
root@web005:/#

这里是为像我一样被卡住的人准备的工作代码:

echo -n "
-------------------------------------------------------
            `hostname` Menu
-------------------------------------------------------

Choose your desired Host:

"
i=1
for D in /var/www/*.*/;
    do   
        if [[ -d $D ]]; then
            Hosts[$i]=$D
            echo $i') ' $D
            i=$(($i+1))
        fi
    done
read -p "Select: " Input
    Directory="${Hosts[$Input]}";
    ChangePerms;

最佳答案

你的问题是:

`
i=1
for D in /var/www/*.*/;
    do   
        if [[ -d $D ]]; then
            Hosts[$i]=$D
            echo $i') ' $D
            i=$(($i+1))
        fi
    done
`

subshel​​l 中执行。因此,脚本的其余部分不知道 Hosts 是什么。 (换句话说,Hosts 在脚本的主体中是空的)。在显示菜单之前填写 Hosts

关于arrays - 来自用户输入的 Bash 数组键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34536739/

相关文章:

linux - 如何从 IRQ 范围内的非整体内核模块进行软重启?

linux - 我如何在使用“ls -la”时隐藏终端中链接文件夹的原始目录

arrays - 从 bash 中的多个数组中的相同数据位置提取

python - iotop 脚本无法通过自定义脚本执行工作

python - 根据条件从列表中删除项目

ruby - 如何使用 Ruby 计算数组中唯一绝对值的数量?

python - 返回两个 numpy 数组之间的公共(public)元素索引

javascript - 在 Div 内显示 JavaScript 数组元素

c - linux选择性能场景

macos - 有没有办法在 OS X 中使用 shell 更改键盘快捷键