지금까지 살펴본 한 가지 방법으로 프로세스의 출력으로 변수를 초기화하는 두 가지 방법이 있습니다. 이 둘 사이에 어떤 차이가 있습니까?변수를 초기화하는 다른 방법
ex1=`echo 'hello world'`
ex2=$(echo 'hello world')
지금까지 살펴본 한 가지 방법으로 프로세스의 출력으로 변수를 초기화하는 두 가지 방법이 있습니다. 이 둘 사이에 어떤 차이가 있습니까?변수를 초기화하는 다른 방법
ex1=`echo 'hello world'`
ex2=$(echo 'hello world')
같은 효과가 있습니다.
$()
은 더 읽기 쉽고 $()
을 다른 $()
에 중첩하기 쉽기 때문에 권장됩니다.
는 업데이트 :
$()
구문은 POSIX 1003.1 표준 (2004 년 판)입니다. 그러나 일부 오래된 UNIX 시스템 (SunOS, HP-UX 등)에서는 /bin/sh
이이를 이해하지 못합니다.
대신 "backtick"을 사용하거나 스크립트가 그러한 환경에서 작동해야하는 경우 다른 쉘 (일반적으로 ksh)을 사용해야 할 수도 있습니다.
사용할 구문을 모른다면 $()
을 사용하십시오. 역 따옴표 구문은 더 이상 사용되지 않습니다.
는 또한 쉬에 작업을 수행하므로 $()
가 POSIX 것을 알 수
직접 초기화하지 않은 경우 변수를 기본값으로 초기화하는 다른 방법이 있습니다.
[jaypal:~/Temp] a="I have initialized var a"
[jaypal:~/Temp] echo ${a:="Default value"}
I have initialized var a
[jaypal:~/Temp] a=
[jaypal:~/Temp] echo ${a:="Default value"}
Default value
연산자가 변수의 새 값을 읽고 이전 값을 출력합니다. :) –
이것은 일반적으로 스크립트에 값을'$ 1','$ 2 '로 전달할 때 사용되며 명시 적으로 값이 전달되지 않은 경우에도 스크립트가 실행되도록 도와줍니다. 이를 통해 값이 할당되지 않은 경우 변수가 기본값으로 실행되도록 암시 적으로 설정할 수 있습니다. 이렇게하면 변수가 할당되었는지 여부를 확인할 수있는 약 4-5 줄의 코드가 저장됩니다. 예를 들면'if [-z "$ var"]와 같습니다. ... ' –
나는 우리가 사용할 수 있다고 믿는다. echo $ {a : = "Default value"} 또는 echo $ {a : - "Default value"} – Indrajeet
@samus : $()는 실제로 POSIX (1003.2 생각합니다)이지만 이전 UNIX에서는 작동하지 않습니다. 나를 믿어 라. 나는 매일 사용한다. –
그러나 요점은, 우리가 이식성에 대해 말할 때 우리는 POSIX를 의미합니다. 왜냐하면이 표준은 대부분의 플랫폼에서 지원되는 현재의 표준이기 때문에 특정 요구 사항을 충족시키는 특별한 경우가 있습니다. –
@samus : "더 많은 휴대용"이란 말은 "새로운 POSIX 표준과 호환되지 않습니다"가 아니라 "더 많은 OSes에서 작동합니다"를 의미합니다. –