![언어 bash를 설정하고 변수를 넣습니다.](https://rvso.com/image/97244/%EC%96%B8%EC%96%B4%20bash%EB%A5%BC%20%EC%84%A4%EC%A0%95%ED%95%98%EA%B3%A0%20%EB%B3%80%EC%88%98%EB%A5%BC%20%EB%84%A3%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
저는 두 가지 언어가 포함된 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}]}