URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 37101
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Как в sh определить число символов в строке"

Отправлено auto_tips , 04-Апр-07 18:08 
В FreeBSD sh и bash:
test="string"
len=${#test} ##Длина строки test
char1='t' ##Первый символ для поиска
pos1='echo $test | awk -vs=${char1} '{print index($0,s);}''  ##pos1=2 - найден


URL:
Обсуждается: https://www.opennet.ru/tips/info/282.shtml


Содержание

Сообщения в этом обсуждении
"Как в sh определить число символов в строке"
Отправлено merzod , 04-Апр-07 18:08 
А вот давайте посмотрим так: запустим тогда выше описанный скриптик в SH, а не BASH!

#!/bin/sh
test="string"
len=${#test}

и что же он там ответит? Кто угадает - поставлю пятерочку... правильно, ответит он нам:

./1.sh: bad substitution

поэтому, Уважаемый надо либо темочку подправить на BASH или дописать сюда следущее:

len=`echo $test | wc -m`

но будте бдительны!!! от $len надо еше единичку отнять.

real_len=$[len-1]


"Как в sh определить число символов в строке"
Отправлено Saveliy , 07-Дек-13 03:59 
Вот вы Васи... Работает len=${#test} прекрасно в sh!
Вот такая команда не работает len=`expr length $STR`, а ${#test} изумительно работает!
Вы как проверяли? Может сами оболочку перепутали?
Тест провожу в sh (по умолчанию на фряхе 9.1) по рутом. Может не работает из под обычного юзера, но сомневаюсь в этом и не хочу даже проверять.
Ваш пример тоже имеет право на жизнь для портабельности, только с параметром -n к echo, как вам подсказали позже.

"Как в sh определить число символов в строке"
Отправлено merzod , 04-Апр-07 18:30 
Круче:

real_len=`expr $len - 1`


"Как в sh определить число символов в строке"
Отправлено nameless , 18-Фев-10 12:45 
printf $test | wc -m

"Как в sh определить число символов в строке"
Отправлено Николай , 13-Июл-11 14:30 
echo text | wc -m
Обманывает - выводит на один символ больше

Вот вывод моего bash:
~$ echo text | wc -m
5


"Как в sh определить число символов в строке"
Отправлено mmihail , 16-Дек-11 18:39 
не надо ничего отнимать
echo надо знать команду как следует

echo -n text | wc -m