On Tue, Oct 27, 2020 at 11:28:12AM +1100, David wrote: > On Tue, 27 Oct 2020 at 10:56, David Wright <deb...@lionunicorn.co.uk> wrote: > > fuser -v "$j" > > [ $? -ne 0 ] && gzip "$j" && mv -i "$j.gz" "$HOME/.monitors/xsession/" > > > (Script improvements always appreciated.)
> https://www.shellcheck.net says: > """ > Line 2: > [ $? -ne 0 ] && echo hi > ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not > indirectly with $?. > """ In other words, instead of writing: fuser -v thing [ $? != 0 ] && other thing && third thing You can write it this way: if ! fuser -v thing; then other thing && third thing fi The $? form isn't technically *wrong*, but it's awkward, and doesn't let you have an "else" action.