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
4

1 に答える 1

1

引数に が含まれているかどうかをテストするには-cleanup、それを実行できます ( ashon でテスト済みMinix3):

if echo "$@" | grep -- "-cleanup" >/dev/null 2>&1; then
    echo "-cleanup is present..."
fi

さらに、長い GNU スタイル オプションを使用するための適切なソリューションが必要な場合は、 http://www.sputnick-area.net/scripts/getopts_long_example.shおよびhttp://www.sputnick-area.net/scripts/getopts_longを参照してください。し


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スイッチで自由に改善してください。

于 2012-10-15T02:40:55.007 に答える