言語bashを設定し、変数を設定する

言語bashを設定し、変数を設定する

2 つの言語を含む bash スクリプトを作成しています。 しかし、その構造を実現できませんでした。 メッセージは「エコー」され、残りは変更されません。

私のスクリプトの例:

英語

 echo "Hello word"
 sudo blabla
 echo "Done"

スパ

echo "Hola Mundo"
sudo blabla
echo "Terminado"

これが私のアイデアです:

function languaje(){
lan=`echo $LANG | cut -c1-2 | grep es`
  if [ "$lan" ]; then
  spa1=Hola Mundo
  spa2=Terminado
else
  eng1=Hello word
  eng2=Done
fi
}
languaje

スクリプトに変数を作成する必要があります

 $eng1
 sudo blabla
 $eng2

とても難しい...

この例は非常に簡単です。関数の場合は状況はさらに複雑になります。

function dns1(){
read -p "Put your first DNS (Example: 8.8.8.8): " DNS1
DNSNEW1=`echo $DNS1 | egrep '^(([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$'`
if [ "$DNSNEW1" ]; then
find /etc/resolv.conf -type f -print0 | xargs -0 -I "{}" sed -i "s:8.8.8.8:$DNSNEW1:g"  "{}"
echo "You entered correctly DNS1 $DNS1"
fi
}
dns1

言語を「read -p」と「echo」に変更する必要があります

PD: gettext の使い方にはあまり詳しくありません (また、その動作方法も好きではありません)

答え1

これは最善の解決策のように思えますgettextが、本当に使用したくない場合は、次のようなもので十分でしょうか? bash が配列をサポートしていると仮定します。

#!/bin/bash
greeting=("Hello World" "Hola Mundo")
goodbye=("Done" "Terminado")

test "${LANG:0:2}" == "en"
eng=$?

echo ${greeting[${eng}]}
sudo blablabla
echo ${goodbye[${eng}]}

関連情報