#!/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 должна иметь параметр имени.bash find parameters
Я придумал что-то подобное выше, но он doestn работает, когда имя переменной не содержит ничего (пользователь ничего не вводил). Я продолжаю получать ошибку: find: пути должны предшествовать выражению: 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
Но другая ошибка:
находке: неизвестный предикат `-name«example.txt
Это 'if [-z $ name]' должно быть 'if [-z" $ name "]', строго, хотя 'test' (aka' [') может компенсировать отсутствующий аргумент. –
use 'tablica [0] =" - name "; tablica [1] = "$ имя"; 'или гораздо удобнее,' tablica + = (- name "$ name") '. –