쉘 스크립트에서 백틱 또는 달러 사용


9

다른 명령의 반환 결과에서 일부 변수를 채워야하는 셸 스크립트 (Bash 사용)를 작성하는 중입니다.

그래서 나는 다음과 같은 구문을 사용하고 있습니다 :

VAR=`command 2>/dev/null`

그러나 스크립트 쉘에 대한 정보를 찾을 때 다음 구문을 사용하여 위의 내용을 얻을 수 있다는 것을 종종 알았습니다.

VAR=$(command 2>/dev/null)

둘 다 나를 위해 일하고 있으며 (두 경우 모두 예상 결과를 얻음) 여전히 두 형식을 상호 교환 가능하게 사용할 수 있는지 또는 미래의 진화에 순응하기 위해 한 형식을 고수 해야하는지 궁금합니다. 쉘?



벨라 쿠아 링크는 차이점과 사용법에 대한 많은 정보를 제공합니다. 우분투 문제와 관련이 없으므로 프로그래밍 문제가 많기 때문에 종료됩니다. 위에서 언급 한 링크를 따르는 것이 좋습니다.
Luis Alvarado

답변:


13

달러를 사용하십시오. 백틱은 사용 이 더 복잡하기 때문에 (반드시 참조) 반 추천되며 코드 골프 를하지 않고 단일 문자를 저장 해야하는 경우가 아니라면 이점이 없습니다 . 아마 인기있는 쉘에서 곧 제거되지 않을 것이므로 지금은 안전하게 사용할 수 있습니다.


3

$()가능할 때마다 달러 기호 표기법을 고수하십시오. 중첩 인용을해야 할 때 백틱이 번거롭고 혼란스러워집니다. 전의:

$ FOO=`echo "foo's"`
$ echo $FOO
foo's

백틱 $()을 바꾸면 동일한 출력이 나오고 읽기가 더 쉽습니다 (분별할 수있는 다양한 각도).

$ FOO=$(echo "foo's")
$ echo $FOO
foo's

즉, 각 따옴표 (작은 따옴표, 큰 따옴표, 백틱)는 셸에서 다른 의미이므로 $를 사용하면 복잡한 수준을 제거 할 수 있습니다. 그리고 당신을 따르는 개발자는 고마워 할 것입니다. 왜냐하면 당신이 한 일을 알아내는 데 더 쉬운 시간이 있기 때문입니다.


백틱은 기능적으로 중첩 될 수도 없습니다.
Bernhard

@Bernhard 나의 예는 그 진술에 대해 염두에 두었던 것을 보여줍니다.
Aaron
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.