Shell-Script

shell腳本中的子字元串

  • May 27, 2015

我試圖從字元串中獲取子字元串,但出現錯誤:${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

重寫它會更有效,從而首先避免這個問題:

#!/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

你在呼叫ksh. 您想要進行的那種替換僅在 ksh ‘93 之後才有效。您是否有機會使用舊版本?執行 ksh 並檢查是否存在KSH_VERSION. 如果它不存在或在 93 年之前,它就太舊了。

引用自:https://unix.stackexchange.com/questions/205826