문자열에서 하위 문자열을 가져오려고 하는데 오류가 발생합니다.${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