ファイルまたはディレクトリをパラメータとして使用するスクリプトがあり、ファイルをメガバイト単位で比較して、ファイルが1 MB以上、小さいか等しいことを確認します。
私の考えに対する答えは次のとおりです。
#!/bin/bash
FILE=$1
export FILE1
if [ -f$1 ];
then
echo "Hello world!"
fi
if [ $# -lt 1 ]; then
echo "This file is less than 1 megabyte"
fi
このファイルをパラメータとして渡して1MB未満であることを確認したいと思います。今、$# -lt 1が実際には1MBより小さいか、整数1より小さいかを知る必要があります。
ベストアンサー1
一部のコメント作成者/回答者が言ったように、スクリプトは着信ファイルのサイズを取得できません。メガバイトと比較するには、これを行う必要があります。
1つのオプションはstat
次のコマンドです。
bytes=$(stat -c %s filename_here)
別のオプションはwc
次のコマンドです。
bytes=$(wc -c < filename_here)
次に、これを1MBと比較しようとします。 bash算術は整数に制限されているため、小数と比較しようとすると失敗する可能性があります。代わりに1048576バイトと比較してください。
要約すると、次のようになります。
#!/bin/bash
if [ -f "$1" ];
then
echo "Hello world!"
bytes=$(stat -c %s "$1")
if [ "$bytes" -lt 1048576 ]; then
echo "This file is less than 1 megabyte"
fi
fi
サイズの数を最初のif
ステートメントに移動しました。存在しないファイルのサイズを確認することは意味がありません。また、パラメータとして他の操作を実行しない限り、他の変数名を使用する必要はありません$1
。