#!/bin/bash
menu=0
dir=""
size=""
name=""
modif=""
while [ $menu -ne 6 ]
do
echo "1. Name: $name"
echo "2. Directory $dir"
echo "3. Last modified: $modif"
echo "4. Minimum size: $size"
echo "5. Search"
echo "6. End"
read menu
case "$menu" in
"1") read name ;;
"2") read dir ;;
"3") read modif ;;
"4") read size;;
"5") if [ -z $name ]
then
option1=""
else
option1="-name $name"
fi
find "$option1";;
"6") ;;
*) echo "Wrong number!"
esac
done
find コマンドのように機能するスクリプトを作成する必要がありますが、問題が発生しました。ユーザーが名前などを入力しない場合、find コマンドで name オプションを無効にする必要があります。
上記のようなものを思いつきましたが、変数名に何も含まれていない場合(ユーザーが何も入力しなかった場合)は機能しません。エラーが発生し続けます: 検索: パスは式の前にある必要があります: BASH ....
正直なところ、2 ^ 4 IF を使用して、ユーザーが選択した指定されたオプションのみを使用して検索を実行する代わりに、それを機能させる方法がわかりません。
簡単にする方法はありますか?
編集:今私はそれを次のように変更しました:
#!/bin/bash
menu=0
dir=""
modif=""
while [ $menu -ne 6 ]
do
echo "1. Name: $name"
echo "2. Directory $dir"
echo "3. Last modified: $modif"
echo "4. Minimum size: $size"
echo "5. Search"
echo "6. End"
read menu
case "$menu" in
"1")
read name
;;
"2") read dir ;;
"3") read modif ;;
"4")
read size
;;
"5")
if [ -z $name ]
then
unset tablica[0]
else
tablica[0]="-name $name"
fi
find "${tablica[@]}"
;;
"6") ;;
*) echo "Wrong number!"
esac
done
しかし、別のエラー:
find: 未知の述語 `-name example.txt'