2015-09-06 130 views
0

我創建了一個bash腳本選擇文件/文件夾插入到一個RAR命令多重選擇和命令輸入:bash腳本爲

#!/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命令。這些文件可以是用於順序命令或相同的命令IE:

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

OR

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

隨着示出將被順序地運行的命令的第二個例子。

任何幫助表示讚賞!謝謝!

回答

0

我希望能夠運行該腳本並選擇多個文件 和用於輸入到rar命令的文件夾。

您可以使用dialog覈對清單。例如(假設${options[@]}包含的所有文件/文件夾列表從中選擇):

prompt="Please select files:" 
set -- "${options[@]/#/\"}"; set -- "${@/%/\" \"\" \"\"}" 
read -a opt < <(eval dialog --checklist '"$prompt"' 0 0 0 [email protected] 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]}"