Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

  $ mkdir /tmp/foo && cd /tmp/foo && touch bar.txt


Yes. Always chain sequential commands with &&. Always.

This style is pretty prevalent when writing test cases in shell (or just shell scripts in general), e.g. when using something like sharness[1].

[1] https://github.com/mlafeldt/sharness


"bash -e" has much the same effect: it basically exits on the first failed command, with considerations for pipelines, conditionals and the like.

http://www.gnu.org/software/bash/manual/bashref.html#index-s...


Note this recent discussion about bash -e, including my post that "the disappointment with set -e is that it does not work everywhere".

https://news.ycombinator.com/item?id=8054440


It's nice to have, but I wouldn't rely on it to save me - it's no replacement for checking return codes properly.


Certainly, but it's a good habit to get into, like ``use strict`` in Perl.


"Perl and line noise are distinguishable. Properly written perl starts with 'use strict'; line noise rarely does."


When writing test cases in shell, you generally just implement a die() function and execute all commands `foo || die "bar"`


If you don't need to specify a custom message, you could also use "set -e" to die automatically on command failure and use "trap ... EXIT" to display some kind of failure message.


    $ mkdir -m 0700




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: