簡體   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