쉘 스크립트에서 변수 이름을 영구적으로 설정

쉘 스크립트에서 변수 이름을 영구적으로 설정

스크립트를 실행할 때마다 변수 이름을 변경해야 합니다. 변수가 있다고 가정 해 봅시다

a="foo"
echo "Value is : $a"

그것은 인쇄됩니다

Value is foo

하지만 같은 스크립트에서 변수 값을 변경하고 있습니다.

a="bar"

스크립트를 다시 실행하면 인쇄됩니다.

Value is bar

유닉스에서 이것을 달성할 수 있나요?

답변1

이 줄은 $a="bar"오류 메시지를 표시합니다.

bash: foo=bar: command not found

a문자열로 설정하려면 를 bar사용하십시오 a="bar".$a변수 a$a="bar"의미가 없습니다.

스크립트를 실행할 때마다 값을 변경하려면 최소한 두 가지 작업을 수행할 수 있습니다.

  1. a환경 변수를 만듭니다 . 이는 a스크립트 외부에서 설정했음을 의미합니다 export.

    export a="bar"
    

    a그런 다음 평소대로 스크립트를 실행합니다( 먼저 환경에서 상속된 값을 덮어쓰지 않도록 수정해야 합니다 ). 당신은 또한 사용할 수 있습니다

    a="bar" ./myscript.sh
    

    스크립트에 대해서만 변수를 설정합니다(즉, 호출 셸에서 변수로 만들지 않습니다).

  2. 스크립트가 명령줄에서 값을 가져오도록 하여 다음과 같이 스크립트를 호출하세요.

    ./myscript.sh "bar"
    

    그러면 스크립트가 수행됩니다.

    a="$1"
    

    a명령줄 매개변수에서 값을 설정합니다. 여기서는 $1"첫 번째 명령줄 인수"를 의미합니다.

어떤 방법을 사용하든 값이 "$a"다음과 같은지 확인하고 싶을 수도 있습니다.합리적인(즉, 유효한 데이터를 포함) 사용하기 전에.

관련 정보