shell 命令中變量與從定向的運用...

變量和重定向


變量和重定向應用到我們的 linux shell 腳本當中,在shell腳本當中起到關鍵性的作用,如果沒有變量和重定向的應用我們寫起腳本來就是非常困難的一件事:在我們的腳本當中無時無刻都會有他們的身影,熟練他們倆的使用方法,可使我們寫腳本的效率以及效果達到事半功倍。

變量

預定義變量

$0    腳本名
$*    所有的參數
$@    所有的參數
$#    參數的個數
$$    當前進程的 PID
$?    上一個命令的返回值 0表示成功    
$!    上一個後臺進程的PID 

bash 的預置變量理解

[root@deng-120 /test]# vim echo.sh
#!/bin/bash
echo "腳本名 $0"
echo "您輸入所有的參數 $*"
echo "您輸入所有的參數 $@"
echo "您輸入參數的個數 $#"
echo "您當前進程PID $$"
echo "上一個命令的返回值 $?"
echo "上一個後臺進程PID $!"

變量輸出結果

[root@deng-120 /test]# ./echo.sh who    #當前位置下執行腳本 "echo.sh",支配的命令是 “who” 
腳本名 ./echo.sh
您輸入所有的參數 who
您輸入所有的參數 who
您輸入參數的個數 1
您當前進程PID 63426
上一個命令的返回值 0
上一個後臺進程PID 

數值判斷

 #   -ne    -eq   -gt    -lt     -ge        -le   
 #   不等   相等   大於   小於    大於等於   小於等於

重定向

  • 輸入重定向:
    write: 給某個在線的終端/用戶 發信息
    wall: 廣播信息給所有 在線終端
    ctrl + D 發送信息

write: 給某個在線的終端/用戶 發信息

[root@deng-120 /test]# write rosen1  #寫給rosen1用戶,如果換成zan3那就是單獨發給zan3其他用戶不會受影響
hello         
hellox2

注意:針對的是,指定當前用戶並且有在線登陸,或者終端;發送信息纔會收到

[rosen1@deng-120 ~]$ 
Message from root@deng-120 on pts/0 at 17:58 ...
hello
hellox2

wall: 廣播信息給所有 在線終端

[root@deng-120 /test]# vim abc      #在文件abc裏面寫入要廣播的內容
[root@deng-120 /test]# wall < /test/abc     #把abc文件裏面的內容進行廣播
[root@deng-120 /test]# 
Broadcast message from root@deng-120 (Sat Aug xx xx:05:54 2018):
hello I am a radio wall

注意:廣播針對的是所有用戶以及終端。把文件寫成腳本運用重複循環加上 “sleep” 睡眠可以無限循環廣播,不過這樣做實用性不大,不建議使用,看需求決定。

  • 輸入重定向: << 追加輸入
重寫配置文件
[root@deng-120 /test]# vim abcd.sh  #寫成腳本的形式
#!/bin/bash
cat >/test/abc <<EOF
hello
hellix2
EOF
[root@deng-120 /test]#
[root@deng-120 /test]# chmod u+x abcd   #加上執行權限方可執行
[root@deng-120 /test]# ./abcd.sh        #執行腳本abcd.sh
[root@deng-120 /test]# cat abc          #查看abc裏面的內容
hello
hellix2

注意:重寫配置文件多應用於網卡配置信息,他會把文件給清空之後在進行把內容寫入。

  • 重定向輸出: > 覆蓋輸出
    覆蓋輸出,會將之前的文件內容清空後再寫入
    [root@deng-120 /test]# touch abcde  #創建一個 abcd 的文件
    [root@deng-120 /test]# vim abcde    #在文件 abcd 寫寫內容
    abcde
    abcde
    [root@deng-120 /test]# cat abc &gt; /test/abcde  #把文件 abc 裏面的內容覆蓋到文件 abcd 中
    [root@deng-120 /test]# cat abcde     #文件 abcd 中的內容就會被文件 abc 裏面的內容所覆蓋
    hello
    hellix2
  • 重定向輸出: >> 追加輸出
    追加輸出,將信息追加到文件的尾部。採集信息的時候用的比較多
[root@deng-120 /test]# cat abc >> abcde   #把文件 abc 裏面的內容追加到文件 abcd 中
[root@deng-120 /test]# cat abcde          #查看文件 abcd 就會發現新加的內容出現在原有文件內容的下方
hello
hellix2
hello
hellix2

在小小的實例當中帶出重定向和變量的運用,這些知識點相對來說是比較繁瑣而有枯燥,但是有對應的小實例的運用帶出這些知識點。一起來嘗試嘗試吧,有趣又好玩~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章