나는 다음과 같은 논리를 사용하는 스크립트가 있습니다. 그러나 bash
설명서의 Shell Parameter Expansion 섹션을 읽는 중 하나의 단계로 수행 할 수 있어야합니다. 그러나, 나는 그것을 어떻게하는지 주위에 내 머리를 감쌀 수 없다.배쉬 매개 변수 확장
이 나는 시도했다 :
ACTION=${1:-echo} # ends up with $1 in $ACTION
ACTION=${1:+}
ACTION=${ACTION:-echo} # ends up always 'echo'
하고 중첩의 몇 가지 방법이 있지만 중첩는 지금까지 내가 말할 수있는 허용 될 것으로 보인다.
실용적인 해결책이 있다는 것을 알고 있지만, 지금 가능하다면 진정으로 궁금합니다. 그것은 3 진수 연산자로는 직선적 인 것이지만, bash에는 하나가 있다고 생각하지 않습니다.
가능하다면 if/else 구문없이 2 단계 프로세스 인 것처럼 보이지만 기능의 조합 만 사용하는 논리를보고 싶습니다.
감사합니다. elderarthis에 대한
편집 :
스크립트의 나머지 부분은 그냥 :
find . -name "*\?[NMSD]=[AD]" -exec ${ACTION} rm -f "{}" +
난 그냥 실제로 인수를합니다 통과, 따라서, 자신에 대한 전성 검사로 ACTION=echo
을 원하는 ($ {ACTION}을 무효화하여 삭제를 수행하고, args를 전달하지 않으면 에코가 사라집니다.
A nd 나는 TIMTOWTDI를 안다;
$ cat honk.sh
#!/bin/bash
ACTION=${1-echo}
echo $ACTION
$ ./honk.sh
echo
$ ./honk.sh foo
foo
마지막 요구 사항을 ACTION=''
을 가지고 : 나는 미켈 대한
편집 :-) 쉘 매개 변수 확장 섹션에서 바로 물건을 함께 할 수 있는지 찾고 있어요 , 따라서 빈 줄/널 값을 리턴합니다.
첫 번째 스크립트는 꽤 기본적인 두 줄짜리 스크립트로 작동합니다. 어쩌면 스크립트의'ACTION' 부분을 제공 할 수 있을까요? – eldarerathis
@elderarthis : 업데이트되었습니다. –
@Sdaz MacSkibbons : 아, 전화 끊기가 지금 어디 있는지 알 수 있습니다. 나는 이것을 처음 읽을 때 당신이하려고했던 것을 실제로 잘못 해석했습니다. – eldarerathis