이러한'아이덴티티 '기능 (/ 복귀 전달 인자에 대하여)에'아이덴티티 '함수를 작성하는 것 '함수 :이 가능 다음 2 개 특성을 만족하여야
argv_count() { echo "argv_count('[email protected]'):$#"; }
argv_count $(identity a\ b c\ d)
# (Expected output:)
# argv_count('a b c d'):2
추가 인용문이 필요할 경우 도입 될 수 있습니다. 다음과 같은
간단한 후보 번째 테스트 불합격 : 그것은 표준 입력 항등 함수 상대적으로
identity() { for arg in "[email protected]"; do echo "$arg"; done; }
고양이는 정확한 해결책이 아니다 | 표준 출력이.
감사 :
또는 고든 데이비슨의 까다 케이스 그 설명! 실용적인 맥락에서이를 대체하려면 : 어떤 기능도 파일 이름 목록 (공백 포함 가능)을 출력으로 안전하게 반환 할 수 없음을 의미합니까? 왜냐하면 호출자에서'eval'을 사용하지 않는다면, 스페이스와 구분자 사이의 구별을 잃어 버릴 것이고 나중에이 파일리스트를 반복 할 수 없기 때문입니다. –
@LucasCimon : 함수는 null 문자로 구분 된 목록을 반환 할 수 있지만 ('find -print0'처럼)'$()'구문과 함께 사용할 수 없습니다 -'xargs - 0 '또는'while IFS = read -rd ''argument' 루프를 사용합니다. 이것이 "안전한"이유는'$()'와 함께 사용할 수없는 동일한 이유입니다. C 문자열은 널을 포함 할 수 없기 때문에 인수도'$()'도 처리 할 수 없습니다. –