1.1, merzod (?), 18:08, 04/04/2007 [ответить] [↓] [к модератору]
| +/– |
А вот давайте посмотрим так: запустим тогда выше описанный скриптик в SH, а не BASH!
#!/bin/sh
test="string"
len=${#test}
и что же он там ответит? Кто угадает - поставлю пятерочку... правильно, ответит он нам:
./1.sh: bad substitution
поэтому, Уважаемый надо либо темочку подправить на BASH или дописать сюда следущее:
len='echo $test | wc -m'
но будте бдительны!!! от $len надо еше единичку отнять.
real_len=$[len-1] | |
|
2.6, Saveliy (??), 03:59, 07/12/2013 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
Вот вы Васи... Работает len=${#test} прекрасно в sh!
Вот такая команда не работает len='expr length $STR', а ${#test} изумительно работает!
Вы как проверяли? Может сами оболочку перепутали?
Тест провожу в sh (по умолчанию на фряхе 9.1) по рутом. Может не работает из под обычного юзера, но сомневаюсь в этом и не хочу даже проверять.
Ваш пример тоже имеет право на жизнь для портабельности, только с параметром -n к echo, как вам подсказали позже.
| |
|
1.4, Николай (??), 14:30, 13/07/2011 [ответить] [к модератору]
| +/– |
echo text | wc -m
Обманывает - выводит на один символ больше
Вот вывод моего bash:
~$ echo text | wc -m
5
| |
|