gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:03:57 25 4
gpt4 key购买 nike

我正在创建一个名为“remove”的命令,它的功能基本上与 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

关于linux - Getopts 选项仅在执行函数时回显,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53938701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com