📜  bash 根据条件回显复选标记 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:39:28.936000             🧑  作者: Mango

Bash 根据条件回显复选标记

在Bash中,我们经常需要在脚本中询问用户是否要执行某个操作。此时,就可以使用复选框的方式来让用户进行选择。本文将介绍如何让Bash根据用户的选择来回显复选标记。

1. 使用select命令创建复选框

在Bash中,我们可以使用select命令来创建复选框。下面是一个使用select命令创建复选框的例子:

#!/bin/bash

options=("Option 1" "Option 2" "Option 3" "Option 4")
selected=()

echo "Please select options:"

select opt in "${options[@]}" "Quit"; do

  case $opt in
    "Quit")
      break
      ;;
    *) 
      selected+=("$opt")
      ;;
  esac

done

echo "You selected: ${selected[@]}"

在上面的例子中,我们先定义了一个options数组,数组中包含了若干个选项。然后我们使用select命令来循环显示这些选项,并让用户进行选择。用户可以通过输入选项对应的数字来进行选择,选择的结果会保存在selected数组中。当用户选择完毕后,我们打印出用户选择的选项。

2. 根据条件回显复选标记

在上面的例子中,我们只是打印出了用户选择的选项,但有时候我们需要根据用户选择的选项来回显复选标记。例如,我们可能需要让用户选择哪些选项可以进行删除操作,然后根据用户选择来在删除操作前回显复选标记。

下面是一个根据条件回显复选标记的例子:

#!/bin/bash

options=("Option 1" "Option 2" "Option 3" "Option 4")
selected=()

echo "Please select options to delete:"

select opt in "${options[@]}" "Finished"; do

  case $opt in
    "Finished")
      break
      ;;
    *) 
      selected+=("$opt")
      ;;
  esac

done

echo "Selected to delete: ${selected[@]}"

echo "Deleting selected options..."

for opt in "${options[@]}"; do
  if [[ " ${selected[@]} " =~ " ${opt} " ]]; then
    # Print 'x' character before selected option
    echo "x $opt"
  else
    echo "  $opt"
  fi
done

在上面的例子中,我们先让用户选择哪些选项可以进行删除操作,选择的结果保存在selected数组中。然后我们遍历所有选项,并根据用户选择来回显复选标记。如果某个选项被用户选择,那么我们会在选项前面打印一个x字符表示标记,否则我们不会打印任何标记。

结论

以上就是本文介绍的Bash根据条件回显复选标记的方法。使用上述方法,我们可以让Bash脚本中的用户选择操作变得更加方便和友好。