- Learning Linux Shell Scripting
- Ganesh Naik
- 365字
- 2021-06-25 22:02:54
Command1 || command2
The second command is only started if the first command fails. The shell checks
the exit status of the first command and starts the second command only if that
exit status is not equal to 0:
$ ls /root || echo "Command execution failed"
Example:
$ ls || echo "command ls failed"
In the preceding example, if ls runs successfully, then echo will not be called. If the ls command fails, such as $ ls /root, and if the user is not the root, then ls will fail and the echo command will print command ls failed.
When && or || are used, the exit status of the first command is checked first, and then the decision to perform the next will be taken.
For example:
$ ls $ echo $? 0 $ ls /root ls: /root: Permission denied $ echo $? 1 $ tar cvzf /dev/st0 /home /etc | | mail -s "Something went wrong with the backup" root
If we give the command as follows:
$ cd /home/student/work/temp/; rm -rf *
Initially, the shell will change to the /home/student/work/temp folder, and then it will delete all files and folders.
If we enter the command as follows:
cd /backup/ol/home/student/work/temp/ && rm * -rf
This will first change to the required folder, and then the rm command will be called for deletion. The problem with ; is that even if the shell fails to change to the required folder, the rm command will execute and it will delete all the files and folders from your original folder. This will be really dangerous.
For example:
$ [[ "a" = "b" ]]; echo ok ok
In this case, the [[ ]] expression will evaluate to false. Since the semicolon will not check the status of the earlier command, ok will be printed even if the first [[ ]] expression fails.
$ [[ "a" = "b" ]] && echo ok
In this case, the [[ ]] expression will evaluate to false. As the first expression is false, the "&&" operator will not proceed to execute the next command.
In this case, ok will be printed only if [[ ]] is true.
- Hands-On Internet of Things with MQTT
- Go Machine Learning Projects
- 計算機原理
- Learning Apache Cassandra(Second Edition)
- 機器學習與大數據技術
- 分布式多媒體計算機系統
- JSF2和RichFaces4使用指南
- 運動控制器與交流伺服系統的調試和應用
- Kubernetes for Developers
- Ruby on Rails敏捷開發最佳實踐
- LAMP網站開發黃金組合Linux+Apache+MySQL+PHP
- RedHat Linux用戶基礎
- 精通LabVIEW程序設計
- Unreal Development Kit Game Design Cookbook
- 實戰Windows Azure