Shell脚本语法与应用(三)

1、管道

管道就是将左边命令的执行结果,作为标注输入到右边的命令,管道两边的命令在当前 shell 的两个子进程中执行。
ps aux | grep bash就是一个管道用法,通过|分隔左右两边命令,ps aux表示显示当前系统所有进程

[root@localhost ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.5  1.6 178568 13460 ?        Ss   22:53   0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 17
root          2  0.0  0.0      0     0 ?        S    22:53   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        I<   22:53   0:00 [rcu_gp]
root          4  0.0  0.0      0     0 ?        I<   22:53   0:00 [rcu_par_gp]
root          5  0.1  0.0      0     0 ?        I    22:53   0:00 [kworker/0:0-events_power_efficient]
root          6  0.0  0.0      0     0 ?        I<   22:53   0:00 [kworker/0:0H-kblockd]
root          7  0.0  0.0      0     0 ?        R    22:53   0:00 [kworker/u256:0-events_unbound]
root          8  0.0  0.0      0     0 ?        I<   22:53   0:00 [mm_percpu_wq]
root          9  0.0  0.0      0     0 ?        S    22:53   0:00 [ksoftirqd/0]
省略中间部分......
root       1792  0.0  1.1  93040  9456 ?        Ss   22:55   0:00 /usr/lib/systemd/systemd --user
root       1796  0.0  0.5 238728  4736 ?        S    22:55   0:00 (sd-pam)
root       1802  0.0  0.6 159416  5348 ?        S    22:55   0:00 sshd: root@pts/0
root       1803  0.0  0.5  26360  4760 pts/0    Ss   22:55   0:00 -bash
root       1826  0.0  0.0      0     0 ?        I    22:58   0:00 [kworker/0:1-mm_percpu_wq]
root       1838  0.0  0.4  57380  3772 pts/0    R+   23:02   0:00 ps aux

grep bash表示从左边获取到的所有进程结果中查看bash进程

[root@localhost ~]# ps aux | grep bash
root       1803  0.0  0.5  26360  4756 pts/0    Ss   22:55   0:00 -bash
root       1825  0.0  0.1  12320  1096 pts/0    R+   22:57   0:00 grep --color=auto bash

2、引用

2.1、双引号

双引号是弱引用,里面的内容支持参数引用。定义一个变量c,在双引号中引用,可以输出变量$c中的值

[root@localhost ~]# c="zhangsan"
[root@localhost ~]# echo "我是$c"
我是zhangsan

2.2、单引号

单引号是强引用,里面所有内容都被当成字符串,输出的只是变量符号本身$c

[root@localhost ~]# echo '我是$c'
我是$c

2.3、花括号

花括号可以做扩展,使用命令mkdir ./{a,b,c}dir,可以同时创建3个目录,abc后面拼接了相同的dir字符

[root@localhost shell]# mkdir ./{a,b,c}dir
[root@localhost shell]# ll
总用量 12
drwxr-xr-x. 2 root root   6 61 23:17 adir
drwxr-xr-x. 2 root root   6 61 23:17 bdir
drwxr-xr-x. 2 root root   6 61 23:17 cdir

2.4、删除引用

使用命令unset + 变量名即可

[root@localhost shell]# echo $c
zhangsan
[root@localhost shell]# unset c
[root@localhost shell]# echo $c

[root@localhost shell]#

3、命令替换

命令替换允许我们将 shell 命令的输出赋值给变量,方便使用。

3.1、反引号方式

定义一个变量a,值是反引号包裹的查看命令ls -a,再次引用时会执行该命令

[root@localhost shell]# a=`ls -a`
[root@localhost shell]# echo $a
. .. 1.txt adir bdir cdir test01.sh test02.sh test03.sh tmp

3.2、$()方式

定义一个变量b,值是$()包裹的查看命令ls -a,再次引用时会执行该命令

[root@localhost shell]# b=$(ls -a)
[root@localhost shell]# echo $b
. .. 1.txt adir bdir cdir test01.sh test02.sh test03.sh tmp

4、逻辑判断(&&、||)

4.1、逻辑与

格式:command1 && command2,当第一个条件为假,第二个条件不用判断,结果为假
当前目录中有tmp目录,第一个条件为真,所以会执行第二个打印条件

[root@localhost shell]# test -d /tmp && echo "tmp目录存在"
tmp目录存在

4.2、逻辑或

格式:command1 || command2,第一个条件为真,第二个条件不用判断,结果为真
tmp目录下没有11目录,第一个条件为假,所以会执行第二个打印条件

[root@localhost shell]# test -d /tmp/11 || echo "11目录不存在"
11目录不存在

一文搞定Linux常见用法(汇总

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值