실행하는 동안 스크립트에 변수를 전달하고 싶습니다.
전임자: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