2012-01-21 4 views
0

このスクリプトは私の家庭教師が書いたものです、それはわかりません。 誰かがそれを私に説明してもらえますか?このUnixスクリプトの理解

#!/bin/bash 
find $1 -size +${2}c -size -${3}c 

3つのコマンドライン引数を受け入れることとし、このスクリプト:バイト単位のディレクトリ名、バイト単位の最小ファイルサイズと最大ファイルサイズを。したがって、実行すると、次のようになります。

./script.sh /home/Desktop/file 5000 10000 

そして、ファイルサイズが5000から10000の間で画面にエコーされます。

誰もが同じことをする別の方法を知っていますか?

答えて

0

このスクリプトは教師の言うとおりに実行されます。

エラー"find: Invalid argument +c to -size.は、スクリプトの第2引数について通知しないためです。その後、$は{2}値を持たないとスクリプトが実行しようとします:

find your_path -size +$c -size -$c 

あなたはcheck for number or argumentsするためにスクリプトを変更することができます。

#!/bin/bash 
EXPECTED_ARGS=3 
E_BADARGS=65 
HLP_ARG="path min_size max_size" 
if [ $# -ne $EXPECTED_ARGS ] 
then 
    echo "Usage: `basename $0` $HLP_ARG" 
    exit $E_BADARGS 
fi  

find $1 -size +${2}c -size -${3}c 
+0

なぜ 'E_BADARGS = 65'で、' E_USAGE = 64'でないのですか? –

+0

独自の[終了ステータス](http://www.cyberciti.biz/faq/bourne-shell-exit-status-examples/)コードを自由に選択することができます。 – danihp

+0

3つの引数を必要とするのではなく、単純に合理的なデフォルトを設定するほうが良い場合があります:find $ 1 $ {2 + -size + $ {2} c} $ {3 + -size- $ {3} c} –

2
#!/bin/bash 
find $1 -size +${2}c -size -${3}c 
    |___|  |_____|  |_____| 
     |   |    | 
This is the This is  This is the 
first argument the second third argument 
passed while argument 
running the 
    script 

findユーティリティの構文は、ファイルのためのspecified pathを検索することです選択されたoptionsに応じて識別することができます。 second argumentの前で

-size n[ckMGTP] 
True if the file's size, rounded up, in 512-byte blocks is n. 
If n is followed by a c, then the primary is true if the 
file's size is n bytes (characters). 

使用+たちはその後、数が指定されたファイルgreaterを探していることを意味します。同様に-は、表示されるファイルが指定されたサイズより小さくなければならないことを意味します。

スクリプトに3つの引数を渡すと、/home/Desktop/fileである検索するパスに$1を指定していることを意味します。 2番目の引数は、ファイルが指定された引数よりも大きくなる条件を定義します。これは5000です。最後の引数は、ファイルが指定されたサイズ(10000)よりも小さくなるように指定するためのものです。

希望すると便利です。

関連する問題