Pull to refresh

Comments 25

Угу. По крайней мере здесь собраны вещи, которые не являются простым переводом man'а на русский (как часто бывает в подобных статьях).
по поводу «if grep foo myfile > /dev/null; then»

у грепа есть ключик -q для этого ;)

т.е. это будет выглядеть так:

if grep -q foo myfile; then
собственно, об этом написано двумя строчками ниже
странно, я не заметил :(
ну ладно))
Вы знаете, что делать! ;)
Вообще не стоит пользоваться конструкцией типа RESULT=`cat file.txt`.
Более читабелен и современен такой вариант RESULT=$(cat file.txt)
А какая разница? Ну кроме того, что кавычки `` всегда обозначают выполнимую внешнюю команду, а для конструкции $() придётся морщить мозг, пытаясь понять, а что это было.
Спасибо за полезный материал!
Жаль, не все, придется читать оригинал :)
по ссылке внизу текста есть побольше — на следующей неделе запощу
ух ты, это Ваш первый комментарий на Хабре? Поздравляю :)
да, не cмог удержаться :)
Главное, не останавливайтесь на достигнутом.
В одной этой статье больше синтаксических правил, чем во всём языке Tcl. ;)

Когда восстановится заряд поблагодарю за полезную информацию. Всегда долго думал над if без квадратных скобок в чужих скриптах.
UFO just landed and posted this here
Вот еще один хороший аргумент в пользу отказа от использования shell-скриптов, по крайней мере в дистрибутивах.
В тексте статьи.

Написано же — в bash проблемы со «сложными» именами файлов (насколько я помню, вроде даже какие-то портированные на Винду Линуксовые проги отказываются работать в каталогах с пробелами. типа Program Files). надо потоянно извращаться, чтобы работали любые имена, и разработчик может легко об этом забыть, тем более что у многих в системе не используются имена с пробелами, и это может остаться незамеченным.

Велика вероятность появления скриптов с ошибками (более того, уверен, что они есть, надо просто поискать).
Видите ли, лично Вас никто не заставляет писать скрипты именно на bash. Не нравится, как он работает под виндой с каталогами, содержащими пробелы в названиях — Бога ради, пользуйте Perl, Python, PowerShell, vbs, command.com или что там еще под нее бывает, вариантов масса. Еще больше вариантов в Unix-подобных системах. И для каждого из них можно составить подобный список типичных ошибок и подводных камней.

Эта статья — для тех, кто хочет быстро написать скрипт для автоматизации работы и быть при этом уверенным в том, что все сделано правильно. Я сам, если возникают проблемы с bash'ем (с кавычками, например, там черт ногу сломит), которые не удаётся решить в течение 10 минут, все бросаю и переписываю на perl.
Существует еще такое решение первой проблемы:
find. -name '*.mp3' -print0 | xargs -I{} -0 some_command {}

Использование опции -print0 решает проблему всякой хрени в именах файлов ( пробелов и т.д.) путем использования нуля как символа конца строки. Она действует в связке с опцией -0 команды xargs, которая заставляет xargs считать ноль, а не пробел символом конца входной строки.
Лучшим решением первой проблемы является запрет на имена файлов с пробелами. Это меня бесило еще 6 лет назад на Windows, и продолжает бесить до сих пор на никсах (в основном из-за find'а)
Спасибо, очень полезно в связи с предстоящим погружением в эту среду :)
Полезная вещь. Почитаю как следует. Хотя я стараюсь обьходиться питоном, но баш все таки еще нужен
Sign up to leave a comment.

Articles