Я создаю команду под названием «удалить», которая в основном работает так же, как команда rm, но вместо того, чтобы фактически удалять файлы, она сохраняет их в папке корзины.
Я работаю над параметрамидля команды «удалить» и возникли некоторые трудности с опцией -v.Предполагается, что опция -v имеет те же функциональные возможности, что и команда rm;он отображает сообщение о том, что файл был удален.
Мой скрипт выглядит так:
flag=0
mainprocess(){
for filename in $*
mv $filename ~/deleted/$(basename $filename)"_"$(stat -c%i $filename)
flag=1
done
Раздел getopts скрипта выглядит так
while getopts v opt
do
shift
case $opt in
v)
for file in $*
do
if [ $flag -eq 1 ]
then
echo "The file $file has been deleted"
fi
done
;;
esac
if [ $flag -eq 0 ]
then
mainprocess $*
fi
Мой подход к параметру -v состоял в том, что после запуска функции mainprocess она установит для переменной-флага значение 1, а затем отобразит сообщение об удалении файла.Однако всякий раз, когда я запускаю команду с параметром -v, сообщение «файл был удален» никогда не отображается.я попытался отобразить значение переменной flag, а оно всегда было равно 0, даже если я запускаю команду mainprocess.