The OpenNET Project / Index page

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

Частые ошибки программирования на Bash

20.12.2008 17:19

"Частые ошибки программирования на Bash" (часть 1, часть 2, часть 3, часть 4, часть 5) - перевод статьи Bash Pitfalls, в которой описаны некоторые подводные камни и ошибки программистов при составлении Bash скриптов.

  1. Главная ссылка к новости (http://bappoy.pp.ru/2008/12/18...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/19486-bash
Ключевые слова: bash, shell
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (8) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, pavlinux (ok), 21:31, 20/12/2008 [ответить]  
  • +/
    cat /etc/passwd | ( a(){count=0;
                               while read line ;
                                    do
                                      ((count++));
                              done;
                             echo "total number of lines: $count";
                             return $count;}; a;); count=$?; echo $count;

    Опа! :)

     
     
  • 2.2, anonymous (??), 22:54, 20/12/2008 [^] [^^] [^^^] [ответить]  
  • +/
    И к чему это "опа" относилось? К "{count=0;"?
     
     
  • 3.3, pavlinux (ok), 23:59, 20/12/2008 [^] [^^] [^^^] [ответить]  
  • +/
    # cat /etc/passwd | ( a(){ while read line; do ((count++)); done; echo "total number of lines: $count"; return $count;}; a;); count=$?;echo $count;

     
  • 3.6, Andrey Mitrofanov (?), 17:59, 21/12/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >И к чему это "опа" относилось? К "{count=0;"?

    $ ((count++)); echo $count
    1
    $ ((count++)); echo $count
    2
    $ ((count++)); echo $count
    3
    $ ((count++)); echo $count
    4
    $ yes|head -257 | ( a(){ while read line; do ((count++)); done; echo "total number of lines: $count"; return $count;}; a;); count=$?;echo $count;
    total number of lines: 261
    5
    $ yes|head -257 |wc -l
    257
    $ _

    Неужели к недоступности wc на уних-пазих-пла-атформе? :))

     
     
  • 4.8, anonymous_peer (ok), 02:42, 17/07/2009 [^] [^^] [^^^] [ответить]  
  • +/
    У возвращаемого программой значения берутся только 8 младших битов. Так что здесь всё правильно: 261-256=5.

    А count внутри ( ) установлен изначально уже не в 0, а в 4.

     

  • 1.4, Guest (??), 00:05, 21/12/2008 [ответить]  
  • +/
    Лучше бы написали про bash'измы и необходимость их избегать, в том числе [[ и ==
     
  • 1.5, anonymous (??), 00:50, 21/12/2008 [ответить]  
  • +/
    Sorry, программирование на bash - конечно круто, но нужно помнить о кроссплатформенности! многие вещи в обычном sh не работают!
     
     
  • 2.7, Andrey Mitrofanov (?), 18:09, 21/12/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Проблемы индейцев?

    """Поборники переносимости http:/openforum/vsluhforumID9/7769.html#9 допиливают пиломатериал напильником в сторонке. Без перекуров. :-P"""

    И вообще, какие проблемы к переносимости _ошибок_ програмировния, ась?!! 8-)

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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