Назад | Перейти на главную страницу

Следует ли нам отказаться от сценария оболочки (bash) и максимально использовать Python

Чем больше я пишу Python, тем больше я ненавижу сценарий оболочки (bash)

например

if ["foo" = "foo"]; then
   echo "expression evaluated as true"
fi

Угадайте, что такое ошибка? мне нужен пространство после [, который так сложно отлаживать и бессмысленно, в Python, который короток и прост

if "foo" == "foo":
    print "expression evaluated as true"

Поскольку Python сейчас доступен в большинстве систем, как вы думаете, это хороший шанс отказаться от сценария оболочки для новой функции и перейти на Python?

В чем причина для тех, кто все еще пишет новый сценарий оболочки?

Просто. 1) subprocess раздражает цепочка. 2) Печатать проще for f in * ; do foo "$f" ; done как одноразовый, чем написать сценарий Python, чтобы сделать то же самое.

Я до сих пор пишу очень сложные сценарии на bash. Причина? В основном потому, что я привык к этому, а bash присутствует во всех системах (просто убедитесь, что вы не делаете #! / Bin / sh, потому что в некоторых системах может быть тире ...).

Другая причина - очень тесная интеграция с системными командами.

Хорошая причина, по которой я хочу начать привыкать к perl или python, заключается в том, что в bash нет исключений. Он продолжает выполнение сценария, если вы забыли зафиксировать ошибку. И даже выполнение «command || exit» не сработает, потому что оно не работает в каналах.

Лично я использую как сценарии оболочки, так и сценарии Perl. Когда мне в основном нужно иметь дело с системными командами, мне легче написать сценарий оболочки.

В других случаях, когда мне нужно использовать какую-то библиотеку, эквивалент которой я не могу найти в оболочке или не знаю команду, которая может сделать это легко, я переключаюсь на Perl. Это тот случай, когда мне нужно подключиться к базе данных. Я использую модуль Perl DBI. Я говорю о Perl, но та же идея применима и к Python.

Хорошая идея - освоить и то, и другое. Иногда вам нужно это, а в других случаях - другое.