The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Как в sh определить число символов в строке
В FreeBSD sh и bash:
test="string"
len=${#test} ##Длина строки test
char1='t' ##Первый символ для поиска
pos1='echo $test | awk -vs=${char1} '{print index($0,s);}''  ##pos1=2 - найден
 
28.06.2002 , Автор: Soldier
Ключи: string, freebsd, awk, print / Лицензия: CC-BY
Раздел:    Корень / Программисту и web-разработчику / Shell / Готовые скрипты

Обсуждение [ RSS ]
  • 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.2, merzod (?), 18:30, 04/04/2007 [ответить]  
  • +/
    Круче:

    real_len='expr $len - 1'

     
  • 1.3, nameless (?), 12:45, 18/02/2010 [ответить]  
  • +/
    printf $test | wc -m
     
  • 1.4, Николай (??), 14:30, 13/07/2011 [ответить]  
  • +/
    echo text | wc -m
    Обманывает - выводит на один символ больше

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

     
  • 1.5, mmihail (?), 18:39, 16/12/2011 [ответить]  
  • +/
    не надо ничего отнимать
    echo надо знать команду как следует

    echo -n text | wc -m

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру