#!/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 命令一样工作的脚本,但是我遇到了一个问题。当用户不输入例如名称时,查找命令应该禁用名称选项。
我想出了上面这样的东西,但是当变量名不包含任何内容时它不起作用(用户没有输入任何内容)。我不断收到错误:查找:路径必须在表达式之前:BASH ....
老实说,我不知道如何使它工作,而不是使用 2^4 IF 并仅使用用户选择的那些指定选项执行 find 。
有没有办法让它变得更容易?
编辑:现在我将其修改为:
#!/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
但另一个错误:
查找:未知谓词`-name example.txt'