나는 많은 쉘 스크립트를 해킹했으며 때로는 가장 간단한 것들이 나를 방해합니다. 오늘 나는 :
(콜론) bash 내장을 광범위하게 사용하는 스크립트를 보았습니다.
documenation는 충분히 간단한 것 같습니다 :
: (a colon) : [arguments]
인수를 확장하고 리디렉션을 수행하는 것 외에는 아무것도하지 마십시오. 반환 상태는 0입니다.
그러나 이전에는 셸 확장 시연에서만 사용되었습니다. 내가 본 스크립트의 유스 케이스는이 구조를 광범위하게 사용했습니다.
if [ -f ${file} ]; then
grep some_string ${file} >> otherfile || :
grep other_string ${file} >> otherfile || :
fi
실제로 수백 개의 greps가 있었지만, 그들은 거의 동일합니다. 위의 간단한 구조 이외의 입력 / 출력 리디렉션이 없습니다. 나중에 스크립트에서 반환 값을 확인하지 않습니다.
나는 이것을 "또는 아무것도하지 않는다"는 쓸모없는 구조로 읽고 있습니다. 이 grep를 "아무것도하지 않고"끝내는 목적은 무엇입니까? 어떤 경우에이 구조가 단순히 || :
모든 사례에서 벗어나는 것과 다른 결과를 초래 합니까?
:
대한 대안으로 사용 하는 것true
입니다. 아마도errexit
설정되어 있고 작성자는 일부 명령의 종료 상태를 신경 쓰지 않습니다.