쉘 스크립트에서 $ @는 무엇을 의미합니까?
@
쉘 스크립트 에서 달러 기호 뒤에 at 기호 ( )가 무엇을 의미합니까?
예를 들면 다음과 같습니다.
umbrella_corp_options $@
$@
이다 모든 스크립트에 전달 된 매개 변수는.
예를 들어, 당신이 호출하면 ./someScript.sh foo bar
다음 $@
과 같아야합니다 foo bar
.
당신이 할 경우 :
./someScript.sh foo bar
그런 다음 내부 someScript.sh
참조 :
umbrella_corp_options "$@"
이것은 umbrella_corp_options
큰 따옴표로 묶인 각 개별 매개 변수와 함께 전달되어 호출자로부터 공백이있는 매개 변수를 가져 와서 전달할 수 있습니다.
$@
는 $*
"모든 명령 행 인수"를 의미하는 거의 동일 합니다. 그들은 종종 모든 인수를 다른 프로그램에 전달하는 데 사용됩니다 (따라서 다른 프로그램 주위에 래퍼를 형성 함).
두 구문의 차이점은 공백이 포함 된 인수가 $@
있고 큰 따옴표로 묶을 때 나타납니다.
wrappedProgram "$@"
# ^^^ this is correct and will hand over all arguments in the way
# we received them, i. e. as several arguments, each of them
# containing all the spaces and other uglinesses they have.
wrappedProgram "$*"
# ^^^ this will hand over exactly one argument, containing all
# original arguments, separated by single spaces.
wrappedProgram $*
# ^^^ this will join all arguments by single spaces as well and
# will then split the string as the shell does on the command
# line, thus it will split an argument containing spaces into
# several arguments.
예 : 전화
wrapper "one two three" four five "six seven"
결과 :
"$@": wrappedProgram "one two three" four five "six seven"
"$*": wrappedProgram "one two three four five six seven"
^^^^ These spaces are part of the first
argument and are not changed.
$*: wrappedProgram one two three four five six seven
다음은 명령 행 인수입니다.
$@
= 모든 인수를 문자열 목록에
$*
저장 = 모든 인수를 단일 문자열로
$#
저장 = 인수 수 저장
순수한 $@
의미 의 사용은 대부분의 경우 "프로그래머를 가능한 많이 힘들게한다"는 의미입니다. 대부분의 경우 단어 분리와 공백 및 기타 문자를 인수로 사용하는 데 문제가 있기 때문입니다.
모든 경우의 99 %에서 (추측 된), 그것을 묶어야합니다 "
: "$@"
인수를 안정적으로 반복하는 데 사용할 수있는 것입니다.
for a in "$@"; do something_with "$a"; done
@
위치 매개 변수부터 시작하여 위치 매개 변수로 확장됩니다. 큰 따옴표 내에서 확장이 발생하면 각 매개 변수가 별도의 단어로 확장됩니다. 즉, "$ @"은 "$ 1" "$ 2"...와 같습니다. 큰 따옴표로 묶인 확장이 단어 내에서 발생하면 첫 번째 매개 변수의 확장은 원래 단어의 시작 부분과 결합됩니다. 마지막 매개 변수의 확장은 원래 단어의 마지막 부분과 결합됩니다. 위치 매개 변수가 없으면 "$ @"및 $ @는 아무것도 확장하지 않습니다 (즉, 제거됨).
참고 URL : https://stackoverflow.com/questions/9994295/what-does-mean-in-a-shell-script
'IT story' 카테고리의 다른 글
파이썬 코드를 단계별로 실행하여 문제를 디버그하는 방법은 무엇입니까? (0) | 2020.06.08 |
---|---|
Windows 명령 행에서 배치 파일에서 매개 변수 사용 (0) | 2020.06.08 |
django test app error-테스트 데이터베이스 작성 중 오류 발생 : 데이터베이스 작성 권한이 거부되었습니다. (0) | 2020.06.08 |
잭슨 : 필드 직렬화를 방지하는 방법 (0) | 2020.06.08 |
Angularjs : '구문으로서의 컨트롤러'와 $ watch (0) | 2020.06.08 |