其他
Shell基础(11)-关于shell语句中小括号()和大括号{}的作用
每周二、四、六定期更新!
[root@studyclub script]# cat kuohaotest.sh
#!/bin/bash
IP=10.0.0.131
ping -c1 -W1 $IP &> /dev/null && echo "$IP can reached" || (echo "$IP is unreachable";exit 1)
echo 'finished'
[root@studyclub script]# bash -n kuohaotest.sh # 检查一下有没有语法错误
[root@studyclub script]# bash kuohaotest.sh
10.0.0.131 is unreachable
finished
# 修改一下上面的脚本,便于观察进程情况
[root@studyclub script]# cat kuohaotest.sh
#!/bin/bash
IP=10.0.0.131
echo "the current process: $BASHPID"
ping -c1 -W1 $IP &> /dev/null && echo "$IP can reached" || (echo "$IP is unreachable";echo "the child process: $BASHPID";sleep 100;exit 1)
echo 'finished'
# 执行一下
[root@studyclub script]# sh kuohaotest.sh
the current process: 11799
10.0.0.131 is unreachable
the child process: 11801
[root@studyclub script]# pstree -p
├─sshd(6758)─┬─sshd(10993)───bash(10995)───sh(11799)───sh(11801)───sleep(11802)
[root@studyclub script]# cat kuohaotest.sh
#!/bin/bash
IP=10.0.0.131
echo "the current process: $$"
ping -c1 -W1 $IP &> /dev/null && echo "$IP can reached" || { echo "$IP is unreachable";echo "the child process: $BASHPID";sleep 100;exit 1; }
echo 'finished'
[root@studyclub script]# bash kuohaotest.sh
the current process: 11896
10.0.0.131 is unreachable
the child process: 11896 # 大括号里的显示语句和第三行的显示语句查看到的PID的值相同,说明没有另外开启子shell
好了,看完了例子讲解,我们小结一下小括号()和大括号{}的区别:
() 执行一串命令时,需要重新开启一个子 Shell 来执行。 {} 执行一串命令时,在当前 Shell 中执行。 () 和 {} 都是把一串命令放括号里面,并且命令之间用";"隔开。 () 最后一条命令可以不用分号。(注意看我们的例子) {} 最后一条命令要用分号。(注意看我们的例子) {} 的第一条命令和左括号之间必须有一个空格。(注意看我们的例子) () 里的各命令不必和括号有空格。 () 和 {} 中括号里面的某条命令的重定向只影响该命令,但括号外的重定向则会影响到括号里的所有命令。
课后实践练习:
判断一个文件是不是普通文件且是以.sh结尾的文件,如果是,那么给这个文件加上可执行权限。 编写脚本argspos.sh:传入一个文件路径作为参数,如果参数小于1,则提示用户“至少给一个参数”,如果有一个参数,则显示这个文件的内容。 编写脚本ipping.sh:以IP地址作为参数,测试是否可以连通,如果能ping通,则提示用户该主机已存在,如果不能ping通,提示用户该主机不可访问。 编写脚本ckdisk.sh:检查磁盘分区空间和inode使用率,如果超过70%,就显示告警信息,提示用户空间即将用完。
《Linux基础及进阶》:
054 - Shell基础(6)-set命令实现脚本安全 055 - Shell基础(7)-算术运算 056 - Shell基础(8)-算术运算、条件判断1 057 - Shell基础(9)-条件判断2 058 - Shell基础(10)-条件判断3看完本文有收获?请分享给更多人
推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!
微信号|bjdream-1
Cloud研习社 ·