linux - 如何在 shell 脚本中使用 line 作为可选函数?

标签 linux bash shell scripting

我当前正在创建一个脚本来从文件中检索一组行,并让用户选择其中任何一行来执行特定任务。

例如:

echo "my_files"
1) my_files1
2) my_files2
3) my_files3
...
n) my_filesN

我想让用户选择这些行中的任何一行,并根据 shell 脚本中的选择执行特定任务。

最佳答案

也许您想要类似下一个菜单的内容:

#!/bin/bash

test -f "$1" || { echo "File \"$1\" can not be found."; exit 1; }

readarray -t options < "${1}"

# set the prompt used by select, replacing "#?"
PS3="Use a number to select a command or 'q' to cancel: "

stopmenu=
while [[ -z "${stopmenu}" ]]; do
   select opt in "${options[@]}" ; do
      if [[ ${REPLY} = q ]]; then
         stopmenu=1
    break
      fi
      if [[ ${#opt} -gt 0 ]]; then
         echo "$opt"
         source <(echo "${opt}")
      fi
      break
   done
   echo
done

您可以使用 shell 命令作为参数给出文件名,例如 menu myfile。带有菜单选项的文件可能看起来像

echo "Hello world"
echo "Comment is allowed" # Just add text after a hash.
ls -l
echo "Value of xxx=[${xxx}]" # xxx can be filled in the next menu option
read -p "Enter value for xxx: " xxx # The variable xxx will be known in the menu

关于linux - 如何在 shell 脚本中使用 line 作为可选函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60608203/

相关文章:

linux - 如何比较bash中的2个范围列表?

bash 确定变量是否为空,如果是则退出。

mysql - BASH 和 MYSQL - 运行 bash/sh 脚本期间记录 mysql 问题

java - 如何在 Java 中保存 shell 脚本的 echo 输出

linux - 通过 bash 脚本的 Gnuplot

linux - 自定义 Linux 内核

linux - 尝试添加 providerAccount 时 Yodlee Y400 错误在 Windows 上有效,但在 Linux 上很少

node.js - 如何使用 node.js 生成 child_process 并将输出保存到文件

Shell 脚本 : Get name of last file in a folder by alphabetical order

linux - 命令在 shell 脚本中不起作用,它作为命令工作