Bash 스크립트에 대한 선택적 명령

Bash 스크립트에 대한 선택적 명령

다양한 환경 변수를 설정하고 프로그램을 실행하는 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/shbash


실제로 스크립트 자체에서 변수를 설정하지 않고 배열을 다르게 처리하는 위의 변형입니다( 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

관련 정보