다양한 환경 변수를 설정하고 프로그램을 실행하는 Bash 스크립트가 있습니다. 인수를 사용하여 명령을 실행하면 변수 중 하나가 변경되기를 원합니다 debug
.
나는 Lua 코드에서 이 작업을 수행하는 방법을 100% 알고 있지만 Bash는 Lua가 아니며 아직 학습 초기 단계에 있습니다.
./foo.sh
본질적으로, 내가 이것을 실행할 때
export var1
export var2
export var3
program
나는 그것을 원한다아니요var1
달리면 통과./foo.sh debug
답변1
변화
#!/bin/bash
export var1="value1"
export var2="value2"
export var3="value3"
program
입력하다
#!/bin/bash
if [ "$1" != "debug" ]; then
export var1="value1"
fi
export var2="value2"
export var3="value3"
program
스크립트에 대한 첫 번째 명령줄 인수는 $1
문자열이 아닌 경우 debug
환경 export
변수 에서 사용할 수 있습니다 var1
.
위에서 언급한 대로 스크립트는 특정 기능을 사용하지 않으므로 선택적으로 #!
- 행을 로 변경할 수 있습니다.#!/bin/sh
bash
실제로 스크립트 자체에서 변수를 설정하지 않고 배열을 다르게 처리하는 위의 변형입니다( program
스크립트를 시작할 때만 적용됨).
#!/bin/bash
if [ "$1" != "debug" ]; then
vars=( var1="value1" )
fi
vars+=( var2="value2" var3="value3" )
env "${vars[@]}" program
또는 /bin/sh
,
#!/bin/sh
mode=$1
set -- var2="value2" var3="value3"
if [ "$mode" != "debug" ]; then
set -- var1="value1" "$@"
fi
env "$@" program