ユーザー入力をテキストファイルの内容と比較するには?

ユーザー入力をテキストファイルの内容と比較するには?

私はユーザーが自分の設定をテキストファイルに保存できるスクリプトを作成しています。保存した設定を使用するには、設定名を入力する必要があります。その後、スクリプトはユーザーの入力を比較してテキストファイル内の名前を見つけます。一致する名前が見つかった場合は、そのテキストファイルから行全体を抽出します。これまで私のコードは次のようになります。

echo enter setting name
    read name
    #count=0
    while IFS= read line
    do
        if [ "$name" == "$settingName" ]
        then
            cp **/*"$ft1" $dir1
        else
            echo "file doesnt exist"
        fi
    done < preco.txt

変数を保存するために使用するコードは次のとおりです。

echo save settings?
    read decision
    if [ "$decision" = "y" ]
        then
        echo enter settings name
        read settingName

        echo $settingName $dir1 $ft1 >> preco.txt
    else
        echo "bye"
        exit

$dir1と$ft1をcpに入力したいと思います。

答え1

設定を保存するコードから推測できますが、設定ファイルの例を含めるとよいでしょう。

コードの1つの問題は"$settingName"

パラメータにスペースがないと仮定すると、次のように動作します。

echo enter setting name
read name
found=false
while read settingName dir1 ft1
do
    if [ "$name" == "$settingName" ]
    then
        cp "$ft1" $dir1
        found=true
    fi
done < preco.txt
if ! $found; then
    echo "$name not found"
fi

このステートメントは、read settingName dir1 ft1ファイルの3つのフィールドをpreco.txt名前付き変数として読み込みます。

もう一つのポイントは、一致しないすべての行に対してエラーメッセージを表示したくないことです。ファイルを読み取り、一致する行がない場合にのみエラーメッセージを表示する必要があります。

関連情報