当前位置:   LINUX > 正文

用户输入的Bash数组键

linux,arrays,bash,shell,ubuntu-14.04,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

所以我有一个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;

似乎由于某种原因,关键是没有正确设置数组.

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;

David Rankin.. 5

你的问题是:

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

在一个执行subshell.因此,您的脚本的其余部分不知道是什么Hosts.(换句话说,Hosts在脚本的主体中是空的).Hosts在您出示菜单之前填写.



1> David Rankin..:

你的问题是:

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

在一个执行subshell.因此,您的脚本的其余部分不知道是什么Hosts.(换句话说,Hosts在脚本的主体中是空的).Hosts在您出示菜单之前填写.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/LINUX/detail/18316
推荐阅读
相关标签
  

闽ICP备14008679号