The Computer Oracle

what is the difference between "command && command" and "command ; command"

--------------------------------------------------
Hire the world's top talent on demand or became one of them at Toptal: https://topt.al/25cXVn
and get $2,000 discount on your first invoice
--------------------------------------------------

Music by Eric Matyas
https://www.soundimage.org
Track title: The Builders

--

Chapters
00:00 What Is The Difference Between &Quot;Command &Amp;&Amp; Command&Quot; And &Quot;Command ; Command&Qu
00:28 Accepted Answer Score 97
01:18 Answer 2 Score 36
02:21 Thank you

--

Full question
https://superuser.com/questions/619016/w...

--

Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...

--

Tags
#linux #ubuntu #commandline #bash #shell

#avk47



ACCEPTED ANSWER

Score 97


&& is a logical operator. ; is simple sequencing.

In cmd1 && cmd2, cmd2 will only be run if cmd1 exits with a successful return code.

Whereas in cmd1; cmd2, cmd2 will run regardless of the exit status of cmd1 (assuming you haven't set your shell to exit on all failure in your script or something).

On a related note, with cmd1 || cmd2, using the || 'OR' logical operator, cmd2 will only be run if cmd1 fails (returns a non-zero exit code).

These logical operators are sometimes used in scripts in place of a basic if statement. For example,

if [[ -f "$foo" ]]; then mv "$foo" "${foo%.txt}.mkd"; fi

...can be more concisely achieved with:

[[ -f "$foo" ]] && mv "$foo" "${foo%.txt}.mkd"



ANSWER 2

Score 36


Syntax

command1 && command2

command2 is executed if, and only if, command1 returns an exit status of zero (true). In other words, run command1 and if it is successfull, then run command2.

command1 ; command2

Both command1 and command2 will be executed regardless. The semicolon allows you to type many commands on one line.

Related:

command1 || command2

command2 is executed if, and only if, command1 returns a non-zero exit status. In other words, run command1 successfully or run command2.


Example

&& operator:

$ rm /tmp/filename && echo "File deleted"

; operator:

$ echo "foo" ; echo "bar"

|| operator:

$ cat /tmp/filename 2>/dev/null || echo "Failed to open file"

External Links

  1. Linuxtopia.org
  2. Tldp.org