abc.sh 실행 시 터미널을 통해 스크립트의 변수를 전달하는 방법

abc.sh 실행 시 터미널을 통해 스크립트의 변수를 전달하는 방법

실행하는 동안 스크립트에 변수를 전달하고 싶습니다.

전임자:sh abc.sh export id=3

답변1

내보낸 변수와 동일한 명령줄에 설정된 변수는 프로그램에 표시됩니다.

$ cat foo.sh
#!/bin/sh
echo "$foo"

$ foo=bar ./foo.sh
bar

$ export foo=bar
$ ./foo.sh
bar

그러나 보다 일반적인 관용구는 위치 인수 등 으로 설정되는 명령줄 인수를 사용하는 것입니다 $1.$2

$ cat arg.sh
#!/bin/sh
echo "$1 and $2"

$ ./arg.sh alpha beta
alpha and beta

또는 처음부터 일부 고정 인수를 제거하기 위해 를 "$@"사용한 후에 모든 명령줄 인수를 가져오는 데 사용합니다. shift명명된 매개변수의 경우 getopt(매뉴얼 페이지), 또는 getopts(POSIX,bash-hackers.org의 튜토리얼).

그럼에도 불구하고 강력한 스크립트는 일부 변수가 누락된(설정되지 않은) 상황을 처리해야 합니다.

답변2

다음과 같은 방법으로 이 작업을 수행할 수 있습니다(이 실행에만 해당).

id=3 sh abc.sh 

답변3

실행하기 전에 선언(또는 내보내기, 여기서는 필요하지 않음):

id=3 ./myScript.sh

myScript.sh:

#!/bin/bash

echo "id = $id"

산출:

id = 3

관련 정보