Вы можете переупорядочить логику своего сценария, чтобы помочь вам справиться с каждым из ваших режимов работы без какой-либо одной опции, вызывающей проблемы с другим. Один из способов сделать это - обработать и ответить на все входящие в ваш оператор case
. Пример:
#!/bin/bash
[ -n "$1" ] || {
echo "Error: insufficient input. usage: ${0##*/} -d -x dirname"
exit 1
}
case "$1" in
-d)
mv -R $dir/* /tmp
;;
-x)
find -executable -type f | xargs mv -t "$dir"/* /tmp
;;
* )
for dir in "[email protected]"; do
[ -e "$dir" ] && mv "$dir"/* /tmp
done
;;
esac
exit 0
Здесь вы проверяете, что у вас есть вход, если не предусмотрено использование и выход. Если есть вход, то если -d
реагировать с mv
, если -x
реагировать с find
, а затем, наконец, если ничего не соответствует, используйте default
случай заявление к материалу теста если ваш входной файл/реж, что существует, и если поэтому, затем mv
. Это один из способов переупорядочения. (Примечание: я использовал ваши команды без дальнейшего тестирования :)
он должен быть 'case $ 1 in -d) ...' Удачи. – shellter