Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
while read a b c; do
grep $(sed s/1/2/ <<< $a) ... && some_command || error_handler
done <(find ... | grep ... | tr ... | sort -u)result = `ls -l | grep myfile
мне пришлось использовать препроцессинг, каюсь, но другого способа я не нашел
`curl {avatar_url} > {destination}

&& и || в bash, ну и поддержка virtualenv кривая (и это в shell'e на Python для любителей писать проекты на Python). А вот fish — действительно оказался очень приятной штукой, тут и остановился (даже небольшой скринкаст записал).вы хотите распарсить json, xml, yamlЕсть jq/xmlstarlet/shyaml.
то непременно лезу в поисковикВместо того, чтобы в мануал глянуть, который уже на диске лежит. Обычно.
синтаксис языка простой и интуитивныйУ шей он тоже простой и интуитивный, если допереть, что «ключевые слова» — это на самом деле имена команд, соответственно, они всегда стоят в начале и не более одного на команду. А так-то у пыхтона по сравнению с «мейнстримными языками» синтаксис не менее странный. И привязка синтаксиса к форматированию многих отпугивает. Иногда красивее однострочник написать, чем длинную узенькую «лестницу».
Есть jq/xmlstarlet/shyaml
Вместо того, чтобы в мануал глянуть, который уже на диске лежит. Обычно.
а о удобстве использованияНу и чем впихивание в однострочник скриптов на другом языке удобнее рассчитанных на CLI утилит с компактным синтаксисом запросов?
Поисковик даст ответ мгновенноЕсли соединение быстрое. И даже при этом надо пролистать пару-тройку сайтов.
мануал надо сначала найтиПрям так сложно man bash набрать, ага.
потом в нем найти if.А вот с этим там проблема, да, дюжеть большой мануал, и коллизий на поиск много, даже под /^\s+if много подпадает. С другой стороны, если пролистать его разок весь, то можно запомнить, что команды в конце.
#!/usr/bin/tclsh
package require json
set destination ""
if {[catch {
# set answer [exec curl https://api.github.com/users/python 2>1&]
set answer [exec curl -s https://api.github.com/users/python]
set answer_json [::json::json2dict $answer]
set avatar_url [dict get $answer_json avatar_url]
set destination [file join [exec mktemp -d -t] python.png]
exec curl -s $avatar_url > $destination
puts "Avatar downloaded: [exec ls -l $destination]"
} err opt]} {
puts "Failed to download avatar: $err"
if {$destination ne ""} {file delete -force [file dirname $destination]}
puts $opt
}Наверно это https://github.com/lamerman/shellpy/issues/42 → блокер, для перевода с баша шелл-скриптов. Ждать (минуты-часы-дни) вывод пока закончится команда, это точно не то, что ожидаешь от скриптов. И увы, даже на него забито.
Пишем shell скрипты на Python и можно ли заменить им Bash