2012-10-15 20 views
1

我想擴展一個腳本,實現類似Linux上的文件回收站的東西。我有我在底部擴展的代碼。在給定的命令行參數在不同目錄中的文件循環

在我的擴展中,當腳本出現在命令行參數-cleanup中時,我想遍歷/home/7/bearm/.garbage目錄中的文件,並讓用戶決定是否要刪除文件。

但是,我不知道如何檢測命令行參數是否存在。命令行可以有其他參數,我只想在使用-cleanup時循環訪問這些文件。

我也不知道如何遍歷不同目錄中的文件(/home/7/bearm/.garbage)。

我該如何去做這些事?

set directory = '/home/7/bearm/.garbage/' 

if(! -d "$directory") then 
    mkdir .garbage 
    mv .garbage /home/7/bearm/ 
endif 

set n = 1 

while ($n <= $#argv) 
    set file = $argv[$n] 
    if(-d $file) then 
     #do nothing 
     echo "Cannot trash directory $file" 
    else 
     mv $file /home/7/bearm/.garbage 
     echo "Trashed $file" 
    endif 
    @ n++ 
end 
du -h /home/7/bearm/.garbage 

回答

1

要測試參數包含-cleanup,你可以做到這一點(與ashMinix3測試):

if echo "[email protected]" | grep -- "-cleanup" >/dev/null 2>&1; then 
    echo "-cleanup is present..." 
fi 

而且,如果你想使用長GNU風格選擇合適的解決方案,請參閱http://www.sputnick-area.net/scripts/getopts_long_example.shhttp://www.sputnick-area.net/scripts/getopts_long.sh


一個bash版本的僞腳本:

#!/bin/bash 

directory='/home/7/bearm/.garbage/' 

mkdir -p "$directory" 

for arg; do 
    if [[ -d $arg ]]; then 
     #do nothing 
     echo "Cannot trash directory $arg" >&2 
    else  
     mv "$arg" "$directory" 
     echo "Trashed $arg" 
    fi  
done  

du -sh "$directory" 

隨意用-cleanup開關改進它。

+0

增加了僞腳本的bash版本 –

+0

謝謝,但是我將如何遍歷.garbage中的文件? – user906153

+0

'for $ in $ directory/*;做回聲「$ f」; done' –

相關問題