我正在创建一个称为“删除”的命令,该命令的基本功能与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函数,它将把flag变量设置为1,然后它会回显该文件已被删除的消息。 每当我使用-v选项运行命令时,就永远不会回显“文件已删除”消息。我尝试同时显示标志变量的值,即使我运行mainprocess命令,该值始终为0。
答案 0 :(得分:1)
与其添加代码来告诉用户正在执行的操作,不如使用mv本身的-v选项。像这样:
VERBOSE=
while getopts v opt
do
shift
case $opt in
v) VERBOSE=-v ;;
esac
done
for filename in $*
do
mv $VERBOSE $filename '~/deleted/$(basename $filename)"_"$(stat -c%i $filename)'
done