shell脚本中的子字符串

shell脚本中的子字符串

我试图从字符串中获取子字符串,但收到错误:${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

相关内容