繁体   English   中英

Getopts选项仅在执行函数时回显

[英]Getopts option to echo only when a function has been executed

我正在创建一个名为“删除”的命令,该命令的基本功能与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选项运行命令时,就永远不会回显“文件已删除”消息。 我也尝试显示标志变量的值,即使我运行mainprocess命令,它也始终为0。

无需添加代码来告诉用户正在做什么,而只需使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM