用于多个选择和命令输入的Bash脚本

时间:2015-09-06 23:16:20

标签: linux bash select rar ps3

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

findAndReplaceDOMText(document.body, {
    preset: 'prose',
    find: searchString,
    replace: function(portion, match){
      var idx = flatFind.indexOf(match)
      if(idx > -1) return flatReplace[idx]
      else throw "hey, there's no replacement string for this!"
    }
})

因此,这会创建一个列出我运行脚本的所有文件/文件夹的列表,然后将我的选择放入" RAR"命令rar选定的文件或文件夹。

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

#!/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    

OR

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

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

任何帮助表示赞赏!谢谢!

1 个答案:

答案 0 :(得分:0)

  

我希望能够运行脚本并选择多个文件   和输入到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]}"