쉘 스크립트의 하위 문자열

쉘 스크립트의 하위 문자열

문자열에서 하위 문자열을 가져오려고 하는데 오류가 발생합니다.${curr_rec:3:4}: bad substitution

#!/bin/ksh

get_file_totals()
{

    if [ -e "$file_name" ]
    then
        IFS=''
        while read line
        do
        curr_rec=$line
        echo ${curr_rec:3:4}
        done < "$file_name"
    else

        echo "error"
    fi
}

file_name="$1"
get_file_totals

답변1

당신이 원하는 ksh대체 유형은 ksh '93 이후에만 유효합니다. 이전 버전을 사용하고 있을 가능성이 있나요? ksh를 실행하고 확인하십시오 KSH_VERSION. 존재하지 않거나 93보다 오래된 경우 너무 오래된 것입니다.

답변2

다시 작성하는 것이 더 효율적이므로 우선 이 문제를 방지할 수 있습니다.

#!/bin/ksh

get_file_totals()
{

    if [ -e "$file_name" ]
    then
        cut -c4-7 "$file_name"
    else
        echo "error"    # consider stderr by appending >&2
    fi
}

file_name="$1"
get_file_totals

관련 정보