[英]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.