다른 명령의 반환 결과에서 일부 변수를 채워야하는 셸 스크립트 (Bash 사용)를 작성하는 중입니다.
그래서 나는 다음과 같은 구문을 사용하고 있습니다 :
VAR=`command 2>/dev/null`
그러나 스크립트 쉘에 대한 정보를 찾을 때 다음 구문을 사용하여 위의 내용을 얻을 수 있다는 것을 종종 알았습니다.
VAR=$(command 2>/dev/null)
둘 다 나를 위해 일하고 있으며 (두 경우 모두 예상 결과를 얻음) 여전히 두 형식을 상호 교환 가능하게 사용할 수 있는지 또는 미래의 진화에 순응하기 위해 한 형식을 고수 해야하는지 궁금합니다. 쉘?
답변
달러를 사용하십시오. 백틱은 사용 이 더 복잡하기 때문에 (반드시 참조) 반 추천되며 코드 골프 를하지 않고 단일 문자를 저장 해야하는 경우가 아니라면 이점이 없습니다 . 아마 인기있는 쉘에서 곧 제거되지 않을 것이므로 지금은 안전하게 사용할 수 있습니다.
답변
$()
가능할 때마다 달러 기호 표기법을 고수하십시오. 중첩 인용을해야 할 때 백틱이 번거롭고 혼란스러워집니다. 전의:
$ FOO=`echo "foo's"`
$ echo $FOO
foo's
백틱 $()
을 바꾸면 동일한 출력이 나오고 읽기가 더 쉽습니다 (분별할 수있는 다양한 각도).
$ FOO=$(echo "foo's")
$ echo $FOO
foo's
즉, 각 따옴표 (작은 따옴표, 큰 따옴표, 백틱)는 셸에서 다른 의미이므로 $를 사용하면 복잡한 수준을 제거 할 수 있습니다. 그리고 당신을 따르는 개발자는 고마워 할 것입니다. 왜냐하면 당신이 한 일을 알아내는 데 더 쉬운 시간이 있기 때문입니다.