【问题标题】:Bash Script for Multiple Selections and Command Input用于多项选择和命令输入的 Bash 脚本
【发布时间】:2015-12-02 10:48:58
【问题描述】:

我创建了一个 bash 脚本,用于选择要插入 RAR 命令的文件/文件夹:

#!/bin/bash

prompt="Please select a file:"
options=( $(find -maxdepth 1 -print0 | xargs -0) )

PS3="$prompt "
select opt in "${options[@]}" "Quit" ; do 
if (( REPLY == 1 + ${#options[@]} )) ; then
    exit

elif (( REPLY > 0 && REPLY <= ${#options[@]} )) ; then
   echo  "You picked $opt which is folder $REPLY"
    echo -e "What do you want to name your archive?"
    read archivename
    rar a $archivename.rar $opt
    break

else
    echo "Invalid option. Try another one."
fi
done    

因此,这会创建一个我在其中运行脚本的所有文件/文件夹的列表,然后将我的选择放入“RAR”命令中以对选定的文件或文件夹进行 rar。

我希望能够运行脚本并选择多个文件和文件夹以输入到 rar 命令中。这些文件可以用于顺序命令或相同的命令... IE:

rar a $archivename.rar $opt1 $opt2 $opt3 $opt4

rar a $archivename.rar $opt
rar a $archivename1.rar $opt1
rar a $archivename2.rar $opt2

第二个示例显示了将按顺序运行的命令。

感谢任何帮助!谢谢!

【问题讨论】:

    标签: linux bash select rar


    【解决方案1】:

    我希望能够运行脚本并选择多个文件 以及用于输入 rar 命令的文件夹。

    您可以为此使用dialog 清单。示例(假设 ${options[@]} 包含所有可供选择的文件/文件夹的列表):

    prompt="Please select files:"
    set -- "${options[@]/#/\"}"; set -- "${@/%/\" \"\" \"\"}"
    read -a opt < <(eval dialog --checklist '"$prompt"' 0 0 0 $@ 2>&1 >/dev/tty)
    [ "$opt" ] || exit
    eval opt=(${opt[@]})    # parse the quotes
    

    set 命令在文件名周围加上引号,这样它也适用于包含空格的名称。选定的名称放在${opt[@]} 中。然后就可以了

    rar a $archivename.rar "${opt[@]}"
    

    rar a $archivename.rar "${opt[0]}"
    rar a $archivename.rar "${opt[1]}"
    rar a $archivename.rar "${opt[2]}"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-23
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      相关资源
      最近更新 更多