이 두 스크립트는 configScript.sh
과 genScript.sh
입니다. 첫 번째 방법은 내가 원하는 방식으로 작동합니다. 올바른 값을 options.sh
과 echo
에 추가합니다. 그러나 genScript.sh
에 options.sh
에 현재 인수를 허용하고 올바른 echo
을 출력하고 싶습니다. 이제는 genScript.sh
을 실행하면 null
이 반환되며 이유를 알 수 없습니다. Bash는 코드를 예상대로 소싱하지 않습니다.
#!/bin/bash -x
#genScript.sh
. options.sh
OPTION=$1
func2()
{
if [ "$OPTION" == one ] ; then
echo "Option one"
elif [ "$OPTION" == two ] ; then
echo "Option two"
else
echo "null"
fi
}
func2
#!/bin/bash -x
#configScript.sh
func()
{
echo "
Choose
1 - Option 1
2 - Option 2
"
echo -n " Enter selection: "
read select
case $select in
1)
echo " Option 1 chosen"
. ./genScript.sh one
cat <<EOF>options.sh
OPTION=$OPTION
EOF
;;
2)
echo " Option 2 chosen"
. ./genScript.sh two
cat <<EOF>options.sh
OPTION=$OPTION
EOF
;;
esac
}
func
나는
OPTION=$1
을 제거하여 내가 원하는 방식으로 작동
genScript.sh
을 얻을 수 있었다. 내가 그렇게하면
genScript.sh
은
options.sh
의 값을 받아들이고 오른쪽은
echo
을 출력합니다. 하지만
OPTION=$1
configScript.sh
이 작동을 멈추었을 때
options.sh
에 새 값을 더 이상 업데이트하지 않습니다.
'genScript.sh'에서'$ 1'을 반복 해 보았습니다. 나는 아마도 "one"과 "two"를 따옴표로 붙일 것이다. – John3136
$ 1을 echo 할 때, 아무것도 반환하지 않지만'options.sh '의 값을 반환하는 방법을 모른다. ' – Benji