文字列から部分文字列を取得しようとしてエラーが発生します。${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