LINUX.ORG.RU

test.sh: bad substitution


0

0

Здравствуйте!

При попытке запустить скрипт на SunOS 5.10 в стандартном sh заткнулся на одной ошибке. Вот упрощенный вариант:

#!/bin/sh
NO=
if [ ${#1} -le 2 ]; then
   NO="`printf '%03d\n' $1`"
else
   NO="$1"
fi
echo $NO

При попытке запустить:

$ ./test.sh
./test.sh: bad substitution

$ sh -x ./test.sh
NO=
./test.sh: bad substitution

Как это исправить?

Пробовал выяснять длинну строки с помощью expr, но тоже не получилось.

Заранее спасибо!
★★★★★
Ответ на: комментарий от php-coder

Пока придумал для подсчета длинны строки использовать echo "$VAR" | awk '{print length(40)}'

В принципе вопрос закрыт. Если кто скажет, почему у меня expr length не работал нормально, то будет здОрово.

php-coder ★★★★★
() автор топика
Ответ на: комментарий от AnDoR

> тогда уж length=`echo -n $str | wc -c`

изначальная проблема в портабельости. echo с опциями непортабелен и нестандартен

dilmah ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.