3、命令替換
4、邏輯判斷(&&、||)
管道就是將左邊命令的執行結果,作為標註輸入到右邊的命令,管道兩邊的命令在當前 shell 的兩個子程序中執行。
ps aux | grep bash
就是乙個管道用法,通過|
分隔左右兩邊命令,ps aux
表示顯示當前系統所有程序
[root@localhost ~
]# ps aux
user
pid%
cpu%
memvsz
rsstty
stat
start
time
command
root 1
0.51.6
178568
13460
? ss 22:53
0:03/usr/lib/systemd/systemd --switched-root --system --deserialize 17
root 2
0.00.000
?s22:
530:00
[kthreadd]
root 3
0.00.000
?i<22:
530:00
[rcu_gp]
root 4
0.00.000
?i<22:
530:00
[rcu_par_gp]
root 5
0.10.000
?i22:
530:00
[kworker/0:
0-events_power_efficient]
root 6
0.00.000
?i<22:
530:00
[kworker/0:
0h-kblockd]
root 7
0.00.000
?r22:
530:00
[kworker/u256:
0-events_unbound]
root 8
0.00.000
?i<22:
530:00
[mm_percpu_wq]
root 9
0.00.000
?s22:
530:00
[ksoftirqd/0]
省略中間部分...
...root 1792
0.01.1
93040
9456
? ss 22:55
0:00/usr/lib/systemd/systemd --user
root 1796
0.00.5
238728
4736?s
22:550
:00(sd-pam)
root 1802
0.00.6
159416
5348?s
22:550
:00 sshd: root@pts/
0root 1803
0.00.5
26360
4760 pts/
0 ss 22:55
0:00-bash
root 1826
0.00.000
?i22:
580:00
[kworker/0:
1-mm_percpu_wq]
root 1838
0.00.4
57380
3772 pts/0r
+23:02
0:00 ps aux
grep bash
表示從左邊獲取到的所有程序結果中檢視bash程序
[root@localhost ~
]# ps aux | grep bash
root 1803
0.00.5
26360
4756 pts/
0 ss 22:55
0:00-bash
root 1825
0.00.1
12320
1096 pts/0r
+22:57
0:00 grep --color=auto bash
雙引號是弱引用,裡面的內容支援引數引用。定義乙個變數c
,在雙引號中引用,可以輸出變數$c
中的值
[root@localhost ~
]# c=
"zhangsan"
[root@localhost ~
]# echo "我是$c"
我是zhangsan
單引號是強引用,裡面所有內容都被當成字串,輸出的只是變數符號本身$c
[root@localhost ~
]# echo '我是$c'
我是$c
花括號可以做擴充套件,使用命令mkdir ./dir
,可以同時建立3個目錄,abc後面拼接了相同的dir
字元
[root@localhost shell]# mkdir .
/dir
[root@localhost shell]# ll
總用量 12
drwxr-xr-x.
2 root root 6
6月 123:
17 adir
drwxr-xr-x.
2 root root 6
6月 123:
17 bdir
drwxr-xr-x.
2 root root 6
6月 123:
17 cdir
使用命令unset + 變數名
即可
[root@localhost shell]# echo $c
zhangsan
[root@localhost shell]# unset c
[root@localhost shell]# echo $c
[root@localhost shell]#
命令替換允許我們將 shell 命令的輸出賦值給變數,方便使用。
定義乙個變數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
定義乙個變數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
格式:command1 && command2,當第乙個條件為假,第二個條件不用判斷,結果為假
當前目錄中有tmp目錄
,第乙個條件為真,所以會執行第二個列印條件
[root@localhost shell]# test -d /tmp && echo "tmp目錄存在"
tmp目錄存在
格式:command1 || command2,第乙個條件為真,第二個條件不用判斷,結果為真
tmp目錄
下沒有11目錄
,第乙個條件為假,所以會執行第二個列印條件
[root@localhost shell]# test -d /tmp/
11|| echo "11目錄不存在"
11目錄不存在
一文搞定linux常見用法(彙總) Shell指令碼應用(三)
一 使用for語句應用示列 1 1 根據姓名列表批量新增使用者 批量新增使用者的指令碼 root centos01 vim uaddfor.sh bin bash ulist cat root users.txt for uname in ulist douseradd uname echo 123...
Shell指令碼語法
定義單變數 p name kang 使用單變數 echo p name js 輸出kang.js echo p name.js 輸出kang.js cp p name.js copy.js 命令1 命令2 如果左邊的 命令1 執行成功,那麼右邊的 命令2 才會被執行。命令1 命令2 與 相反。如果 ...
shell指令碼 語法
條件測試 test 命令test 可以測試乙個條件是否成立,如果測試條件為真,則該命令的exitstatus為0,反之,exitstatus為1。注意 命令 各引數之間應該用空格隔開,以 結尾。但是 不是命令。測試命令 d dir 如果dir存在並且是乙個目錄則為真 f file 如果file存在並...