所以我有一个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
在您出示菜单之前填写.
你的问题是:
` 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
在您出示菜单之前填写.