Substrings no script de shell

1

Estou tentando obter uma substring de uma string, mas estou recebendo o erro: ${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
    
por Nicholas Namacha 27.05.2015 / 11:26

2 respostas

1

Seria mais eficiente reescrever isso, evitando o problema em primeiro lugar:

#!/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
    
por 27.05.2015 / 13:31
3

Você está invocando ksh . O tipo de substituição que você está querendo fazer só funciona desde o ksh '93. Existe uma chance de você estar usando uma versão mais antiga? Execute ksh e verifique a existência de KSH_VERSION . Se não existe ou está antes de '93, é muito antigo.

    
por 27.05.2015 / 12:03