새로운 개발을 대체하기 위해`…`대체를 사용하거나 가르치는 이유가 있습니까?


16

오류가 발생하기 쉬운 중첩 및 이스케이프 구문이 더 쉽고 적기 때문에 $(...)이전 명령 보다 더 현대적인 명령 대체 구문이 선호 된다는 것을 이해하고 `있습니다.

또한 /bin/sh현대적인 사용에서 대부분의 스타일 쉘은 $(…)다음을 지원 하는 것으로 보입니다 .

  • 세게 때리다
  • (따라서 BusyBox이므로 대부분의 임베디드 Linux)
  • 대시
  • FreeBSD / bin / sh

그리고 $(…)IEEE 1003.1에 의해 지정됩니다.

그래서 나는 두 가지 매우 관련된 질문이 있습니다.

  • 스크립트를 실행해야하는 특정 오래된 시스템을 모르는 경우 쉘 스크립트의 새로운 개발에서`를 사용해야 할 이유가 있습니까?
  • 유닉스 프로그래밍 학생들에게 단순히 글을 쓰도록 지시하지 말아야 할 이유가 있습니까? 다른 개발자의 셸 스크립트를 읽을 때 발생할 수있는 쓸모없는 변형으로 만 $(...)논의하십시오 `(그리고 실제로 오래된 시스템 또는 비표준으로 작업하는 경우 필요할 수 있습니다) 몇 가지 이유)?

7
아니요, 사용하거나 가르치는 데 아무런 소용이 없습니다 `...`. Bourne 쉘에서만 이전 버전으로 이식 할 수 있습니다 (Tourson 쉘에서 이전 버전으로 이식 할 수있는 Bourne 쉘과 ^동일 |). 그러나 (t)csh그렇지 않은 점에 유의하십시오 (그러나 $(...)그것들을 사용하거나 가르치는 것은별로 중요 하지 않습니다 ).
Stéphane Chazelas

2
{) 그것은 그루 초 막스 것은`입니다
금발 미녀

2
기다려, 백틱은 더 이상 사용되지 않습니다 ?? 아무도 이유를 설명하는 정식 참조가 있습니까? 위저드 구문 문자는 검색하기가 매우 어렵습니다.
MathematicalOrchid

1
입력하기가 더 쉽습니다. ``-2 개의 키 누름; $()-shift + 4,9, shift + 0-5 키 누름;
Vi.

3
@MathematicalOrchid stackoverflow.com/questions/9405478/… 꽤 좋은 것 같습니다. 백틱은 특히 추가 견적이 포함 된 경우 제대로 중첩하기가 매우 어렵습니다.
Michael Ekstrand

답변:


19

백틱 (back-tick)이 자주 사용되므로이 구문 구조를 가르치는 것이 좋습니다.

물론 $()스타일 명령 대체는 기본 스타일 (및 표준 준수 구문)로 강조되어야합니다.

백틱이 여전히 인기있는 이유는 무엇입니까? 문자를 입력 할 때 한 문자를 저장하기 때문에 눈에 덜 무겁습니다.


18
나는 "눈에 덜 무겁다"라는 특징을 특징으로하지는 않지만 버그를
나타냅니다

1
일반적으로 간단한 경우에는 백 스틱을 사용하고 복잡한 경우에는 $ ()를 사용합니다. 그러나 지금까지 매우 많은 스크립트가 백 스틱을 사용하고 있었으며 그레이드는 그 범위를 가질 수 있어야했습니다.
peterh-복 직원 모니카

@jasonwryan이 경우 버그는 간결성 때문이 아니라 임의의 문제입니다. 즉, 역 따옴표를 사용하는 것입니다 눈에 쉽게,하지만 그건 아닌 이유 가 감가 상각된다. 설탕이 정의상 좋지 않다고 말하지 않는 한 우리 모두는 무엇이든 asm을 선호해야합니다 ... 실제로 나는 $()더 나은 모습을 좋아하지만 백틱은 더 쉽고 더 KISS입니다. 일반 프로그래밍의 파블로프 식 강박 관념 일 수 있습니다.
goldilocks

@goldilocks 일단 나이가 들면 어쨌든 가독성이 훨씬 더 어려워집니다.
백 시크

3
예를 들어 프랑스 키보드에 `있는 동안, Altrg + è (유형 어색)이며 $, (, )어떤 수정이 필요하지 않습니다.
스테판 샤 첼라

5

나는 프로그래밍을 위해 그것들을 사용하지 않을 것이고 쉘 스크립트에서 백틱 대체를 사용하는 것을 가르치는 것이 좋습니다 (이것은 합의 인 것 같습니다). 나는 그것들이 본질적으로 악하다고 생각하지 않으며 (적어도 일반적인 자습서로 Linux 명령 줄에 의해 판단) 여전히 중첩되지 않을 간단한 스 니펫 / 한 줄에서 자주 사용됩니다. '한 번만 할 것입니다.

참조 명령 대체를 : 역 따옴표 또는 달러 기호 / 괄호는 동봉? .


1

$()실제에서는 이식성이 없기 때문에 구문 사용을 피합니다 . 당신은 네 개의 껍질을 나열했습니다. Solaris / bin / sh에서 스크립트를 실행하고 어떻게 진행되는지보십시오.

반면, 구 시스템 지원은 언제 중단합니까? 새로운 방식으로 일할 수 없습니까? 나는 당신이 당신 자신의 판단을 믿어야한다고 생각합니다. 그리고 당신이 오래된 방법보다 새로운 방법의 확실한 이점을 볼 수 있다면 그것을 찾으십시오 ... 쉘 변수 대체와 혼동됩니다.


1
POSIX는 /bin/sh준수해야 함을 지정하지 않습니다 . /bin/shSolaris 9/10 / ...은 공식적으로 POSIX를 준수하지만 Solaris 는 실제로 부적합합니다. 는 $()이해할 수없는 한 구조입니다. 그러나 이해하지 못하거나 다르게 해석되는 것이 더 많습니다. sh에서 반환 된 경로에서 검색을 준수하는 이식 가능한 방법 getconf PATH입니다.
maxschlepzig
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.