>
read -p "Enter yes/no   " SOMEVAR
SOMEVAR=`"echo ${SOMEVAR,,}"`

위 코드는 ${SOMEVAR,,}: bad substitution 를 제공합니다  오류.

  • 답변 # 1

    파라미터 확장 ${variable,,}   $variable 의 가치로 확장   bash 에서 모든 문자를 소문자로  껍질. 이 코드가 실행될 때 "잘못된 대체"오류가 발생하면 실제로 다음 중 하나임을 나타냅니다.

    해당 쉘을 사용하지 않지만 가능한 /bin/sh  (항상 bash 는 아닙니다. ). 그러나 read -p 에 대한 오류가 발생하지 않습니다  귀하가 더 가능성이 높음을 제안합니다.

    bash 의 이전 릴리스 사용  이 확장을 지원하지 않는 ( bash 릴리스 4에서 도입 됨) ).

    확장의 일반적인 형태는 ${variable,,pattern} 입니다.   $variable 의 모든 문자  그것은 pattern 와 일치  소문자로 변환됩니다 ( ^^ 사용)  대문자로 변환하려면) :

    $ str="HELLO"
    $ printf '%s\n' "${str,,[HEO]}"
    heLLo
    
    

    와이즈 비즈 참조  시스템 설명서를 참조하십시오.

    <시간>

    bash 의 이전 릴리스 대신 변수 값을 소문자로 바꾸기 위해 다음을 수행 할 수 있습니다.

    bash
    
    
    이것은 변수의 값을 variable=$( tr 'A-Z' 'a-z' <<<"$variable" ) 를 통해 전달합니다.  "여기-문자열"을 사용합니다. 와이즈 비즈  유틸리티는 tr 의 모든 문자를 음역합니다   tr 로   A 의 해당 문자에 대한 ASCII 범위 (C/POSIX 로케일 가정)   Z 로  범위.

    <시간>

    참고 사항

    a
    
    

    로 작성하는 것이 더 좋습니다

    z
    
    
    실제로, 당신이 쓴 것은 SOMEVAR=`"echo ${SOMEVAR,,}"` 에서 "명령을 찾을 수 없음"오류를 줄 것입니다   SOMEVAR=${SOMEVAR,,} 라는 명령이 없으면 릴리스 4 이상 공간을 포함하여 ( bash  사용자가 입력 한 것입니다). 큰 따옴표로 묶인 문자열을 실행하려는 명령 대체 때문입니다.

    echo string

  • 이전 bash - ls 명령을 사용하여 특정 문자열로 끝나는 파일을 제외한 모든 파일을 표시하는 방법
  • 다음 -e 또는 -d 인 경우 스크립트의 첫 번째 인수 확인