12 Command Chaining - kumar159man/MyShellLearning GitHub Wiki

Command Chaining

Command Chaining using semicolon(;)

cmd1 ; cmd2 ; cmd3 Through semicolon we can execute multiple commands irrespective of command sucess/failure

myubuntu@myubuntu-VirtualBox:~/Desktop/shellScripts$ pwd;ls;date
/home/myubuntu/Desktop/shellScripts
case1.sh  case.sh  cmdArg.sh  cut.txt  first.sh  grepUsage.txt  regex.txt  search.txt  second.sh  third.sh  variables.txt
Wednesday 08 July 2020 02:50:32 PM IST
myubuntu@myubuntu-VirtualBox:~/Desktop/shellScripts$ pwd ; date ; dgthteh
/home/myubuntu/Desktop/shellScripts
Wednesday 08 July 2020 02:51:27 PM IST
dgthteh: command not found
myubuntu@myubuntu-VirtualBox:~/Desktop/shellScripts$ x=5;y=10;echo "Sum is $((x+y))"
Sum is 15

Command Chaining using logical AND (&&)

cmd1 && cmd2 && cmd3 cmd3 will only execute when there is succesful execution of cmd1 and cmd2 commands

myubuntu@myubuntu-VirtualBox:~$ pwd && ls && date
/home/myubuntu
Desktop  Documents  Downloads  get-docker.sh  Music  Pictures  Public  Templates  Videos
Wednesday 08 July 2020 03:05:08 PM IST
myubuntu@myubuntu-VirtualBox:~/Desktop/shellScripts$ [[ -e first.sh ]] && echo "File Exists" && cat first.sh 
File Exists
#!/usr/bin/bash
echo "Hello this is my first shell script"
dog="Chelsea" 
myubuntu@myubuntu-VirtualBox:~$ date && pwe && ls -ltr
Wednesday 08 July 2020 03:18:42 PM IST

Command 'pwe' not found, did you mean:

  command 'wpe' from deb xwpe (1.5.30a-2.1build3)
  command 'xwe' from deb xwpe (1.5.30a-2.1build3)
  command 'pee' from deb moreutils (0.63-1)
  command 'we' from deb xwpe (1.5.30a-2.1build3)
  command 'pwd' from deb coreutils (8.30-3ubuntu2)

Try: sudo apt install <deb name>

Command Chaining using logical OR (||)

cmd1 || cmd2 cmd2 will only execute when cmd1 will fail

myubuntu@myubuntu-VirtualBox:~$ djsf || date
djsf: command not found
Wednesday 08 July 2020 03:27:03 PM IST

Clubbing Logical AND with Logical OR

myubuntu@myubuntu-VirtualBox:~/Desktop/shellScripts$ ls
case1.sh  case.sh  cmdArg.sh  cut.txt  first.sh  grepUsage.txt  regex.txt  search.txt  second.sh  third.sh  variables.txt
myubuntu@myubuntu-VirtualBox:~/Desktop/shellScripts$ [[ -e first.sh ]] && echo "File is present" || touch first.sh
File is present
myubuntu@myubuntu-VirtualBox:~/Desktop/shellScripts$ ^C
myubuntu@myubuntu-VirtualBox:~/Desktop/shellScripts$ [[ -e first1.sh ]] && echo "File is present" || touch first1.sh
myubuntu@myubuntu-VirtualBox:~/Desktop/shellScripts$ ls
case1.sh  case.sh  cmdArg.sh  cut.txt  first1.sh  first.sh  grepUsage.txt  regex.txt  search.txt  second.sh  third.sh  variables.txt

Shell script for taking backup

#!/usr/bin/bash
[[ -e /home/myubuntu/Desktop/myShellScriptBackup ]] || mkdir /home/myubuntu/Desktop/myShellScriptBackup
tar -cvf /home/myubuntu/Desktop/myShellScriptBackup/shellScriptBackup_$(date +%d-%b-%y-%H:%M:%S).tar.gz /home/myubuntu/Desktop/shellScripts/
⚠️ **GitHub.com Fallback** ⚠️