2つの文字列「foo」と「bar」を比較するスクリプト

2つの文字列「foo」と「bar」を比較するスクリプト

ユーザー入力が「foo」の場合、スクリプトは「foo」または「bar」を印刷してから「bar」を印刷するか、ユーザー入力が「bar」の場合は「foo」を印刷し、そうでない場合は「無効な文字列」を表示しますというスクリプトを生成します。これは私が書いているスクリプトです:

foo=$x
bar=$y
val=$val
echo "enter the val = $val "
read $val
if [ "$val" = "$x" ]
then echo "bar"
elif [ "$val" = "$y" ] 
then echo "foo"
else echo "invalid string"
fi

私はスクリプティングに初めて触れたのでよく理解していません。

答え1

私はこれがあなたに必要なものだと思います:

#!/bin/bash

foo="foo"
bar="bar"

val=""

read -p "Enter the var: " val 

if [ "$val" == "$foo" ]; then
    echo "$bar"
else
    if [ "$val" == "$bar" ]; then
        echo "$foo"
    else
        echo "Invalid string"
    fi
fi

if...elseブロックを次のように置き換えることができますcase(可能なオプションが多すぎる場合に便利です)。

case "$val" in
    "$foo")
        echo "$bar"
        ;;
    "$bar")
        echo "$foo"
        ;;
    *)
        echo "Invalid string"
        ;;
esac

関連情報