Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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
Bash 检查读取输入是否在var中可用_Bash_Server - Fatal编程技术网

Bash 检查读取输入是否在var中可用

Bash 检查读取输入是否在var中可用,bash,server,Bash,Server,我尝试列出/etc/nginx/html/中的所有文件夹 我使用以下代码: folders=`for i in $(ls -d */ | grep -Ev "(backups)"); do echo ${i%%/}; done` folders_count=( $folders ) echo ${#folders_count[@]} 现在我得到了所有名称不包含“backups”的文件夹 现在我想计算文件夹数并将其保存到变量中。我使用以下代码: folders=`for i in $(ls -

我尝试列出
/etc/nginx/html/
中的所有文件夹

我使用以下代码:

folders=`for i in $(ls -d */ | grep -Ev "(backups)"); do echo ${i%%/}; done`
folders_count=( $folders )
echo ${#folders_count[@]}
现在我得到了所有名称不包含“backups”的文件夹

现在我想计算文件夹数并将其保存到变量中。我使用以下代码:

folders=`for i in $(ls -d */ | grep -Ev "(backups)"); do echo ${i%%/}; done`
folders_count=( $folders )
echo ${#folders_count[@]}
它起作用了。我得到一个所有文件夹的列表,我可以数一数这些文件夹

现在,我尝试编写一个脚本来读取用户输入(或者更好,提供1,2,3个选项,但我不知道如何执行),并在用户选择的文件夹中安装一个脚本,如Prestashop(作为示例),前提是有多个文件夹

这是我的密码:

folders_count=( $folders )
echo ${#folders_count[@]}
echo
if [ ${#folders_count[@]} -gt 1 ]; then
  echo "${info} Please choose a Website for Prestashop:" | awk '{ print strftime("[%H:%M:%S] |"), $0 }'
  # for websites in $folders; do
  # echo "${info} $folders" | awk '{ print strftime("[%H:%M:%S] |"), $0 }'
  # echo "${info} $folders" | awk '{ print strftime("[%H:%M:%S] |"), $0 }'
  # done
  echo "$folders" | awk '{ print strftime("[%H:%M:%S] |"), $0 }'
  #read websites_for_prestashop
  read -e -i "$websites_for_prestashop" -p "Please enter your Website: " input
  websites_for_prestashop="${input:-$websites_for_prestashop}"
  if [ "$websites_for_prestashop" == "$folders" ]; then
    echo "Website is $websites_for_prestashop"
  else
    echo "Website $websites_for_prestashop is not found"
  fi
  #echo "${info} Please choose a Website for Prestashop:" | awk '{ print strftime("[%H:%M:%S] |"), $0 }'
else
  echo "nix"
fi
我不知道如何才能让它工作:/

有人能帮我修一下吗


我想列出可用的文件夹。然后,用户应该能够选择在哪个文件夹中安装脚本

文件夹:

[0] Folder 1
[1] Folder 2
[2] Folder 3
[3] Folder 4
....
然后将出现一个查询: 请为安装选择订单:


然后,文件夹的选择应存储在变量read
websites\u for\u prestashop

我不知道脚本应该做什么。有很多行被注释掉了,
websites\u for\u prestashop
的唯一赋值包含对变量本身的引用,并且在首次使用该变量之后发生,脚本最终什么也不做

我可以告诉你的是,提取文件名的方法不是正确的方法。解析
ls
的输出不是一个好主意(请参阅),并且在名称中包含空格等内容的任何文件上,解析方法都会失败

这将是一种方法:

declare -a folders=()
for f in */
do
  [[ $f =~ backups ]] || folders+=("${f%/}")
done
echo "Folder count is: ${#folders[@]}"
谢谢你的帮助@

解决方案很简单:

folders=`for i in $(ls -d */ | grep -Ev "(backups)"); do echo ${i%%/}; done`

        echo "${info} Please choose a Website for Prestashop:" | awk '{ print strftime("[%H:%M:%S] |"), $0 }'
        select websites_for_prestashop in $folders;
        do
             echo "You picked $websites_for_prestashop."
             break
        done

你看过
select
命令了吗?它可以很容易地从数组中创建菜单,请看:这就是我要找的!非常感谢。mh in不知道如何才能完成循环:o在$folders中为prestashop选择网站;do echo“你为prestashop挑选了$U。”donesorry…休息…谢谢你解决了!我想列出可用的文件夹。然后,用户应该能够选择在哪个文件夹中安装脚本。文件夹:`[0]文件夹1[1]文件夹2[2]文件夹3[3]文件夹4,如图所示,此时将出现一个查询:请选择安装顺序:文件夹的选择应存储在变量read
websites\u中,以便\u prestashop
i更新第一篇文章