ファイルの文字列の長さをテストします。

ファイルの文字列の長さをテストします。

私の主張を正しく使用しているかどうかはわかりません。文字列を含むテキストファイルであるパラメータを渡したいです。このスクリプトを実行すると、文字列が32文字未満の場合でも常にifステートメントを入力します。

#!/bin/bash
if [ {$1} > 32 ]; then
    echo "Error: Password length invalid"
else
    echo "okay"
fi

ベストアンサー1

を使用して変数の文字列の長さを取得できます${#variable}。代わり-gtに式を使用する必要があります。>[ ]

#!/bin/bash -

pass=$(cat < "$1") || exit
if [ "${#pass}" -gt 32 ]; then
    echo >&2 "Error: Password length invalid"
    exit 1
else
    echo "okay"
fi

末尾の改行を除いて、バイト数ではなく最初の引数として渡されたファイルの文字数(現在のロケールエンコーディングとして解釈されます)を計算するため、テキスト行を含むファイルにはその行を提供します。

おすすめ記事