【问题标题】:bash script, prompt user to select ID or name completionbash 脚本,提示用户选择 ID 或名称完成
【发布时间】:2013-08-30 09:01:12
【问题描述】:

我正在编写一个脚本,该脚本读取路径中的目录并提示用户选择女巫目录。到目前为止的脚本如下所示:

select choises in ${list_files[@]}; do
  if CONTAINS_ELEMENT $choises "${list_files[@]}"; then
    break
  else
    echo "invalid choise (PS use the ID numbers)! Try again:"
  fi
done

“CONTAINS_ELEMENT”这个东西是一个检查变量 $choises 是否是 list_files 数组的成员的函数。该脚本运行良好,输出如下:

1) first_folder 
2) second_folder
3) yet_another_folder

用户可以通过输入相应的ID值来选择巫婆文件夹(即“second_folder”为“2”)。

我正在努力解决的是:有没有办法检查提供的答案是否是正确的数字或​​正确的文件名?如果你可以手动写入文件名,有没有办法在这个脚本中实现名称完成?

对选择的实际回复保存在变量 $REPLY 中,我需要以某种方式检查 $choises 和 $REPLY。我怀疑完成机制要复杂得多..

这里有人有好的建议吗?如果您能帮助我获得这些功能,那将是非常酷的!

【问题讨论】:

    标签: bash select autocomplete tab-completion


    【解决方案1】:
    select choises in ${list_files[@]}; do
      if CONTAINS_ELEMENT $choises "${list_files[@]}" || CONTAINS_ELEMENT $REPLY "${list_files[@]}"; then 
        break
      else
      echo "invalid choise (PS use the ID numbers)! Try again:"
      fi
    done
    

    这使得 ID 号和完整的目录名称都可以工作,虽然代码有点难看,而且没有名称补全。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多