日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

【Linux学习009】脚本编程之变量、条件测试和条件判断

發布時間:2023/12/4 linux 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Linux学习009】脚本编程之变量、条件测试和条件判断 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Bash環境變量

bash中變量有四種種類型:環境變量、本地變量(局部變量)、位置變量、特殊變量。

1.環境變量

環境變量作用范圍最廣,所有子bash進程都能夠訪問環境變量中的值,定義環境變量的方法是使用export關鍵字。舉例:

kdyzm@kdyzm:~$?export?A=abc kdyzm@kdyzm:~$?echo?$A abc kdyzm@kdyzm:~$

?2.本地變量

本地變量作用范圍是當前bash,子bash訪問不到父bash中定義的變量,定義本地變量的方法是 VARNAME=value。舉例:

kdyzm@kdyzm:~$?B=cde kdyzm@kdyzm:~$?echo?$B cde kdyzm@kdyzm:~$

局部變量是本地變量的一種特殊形式,作用域更小,它只能在方法中使用,使用關鍵字local定義。

?3.位置變量

位置變量的作用類似于正則表達式中的后項引用,正則表達式中使用"\n"來引用,這里使用"$n"來引用。

?4.特殊變量

特殊變量葉叫做“系統變量”,這種類別的變量是bash自己定義的變量,比如$?就是一種特殊變量(系統變量),它用來保存上一條命令的執行結果,0代表執行成功,其它(1-255)代表執行失敗

kdyzm@kdyzm:~$?ls?/tmp config-err-YXMEYj fcitx-socket-:0orbit-kdyzm sni-qt_sogou-qimpanel_1597-Mn3jk9 sogou-qimpanel:0.pid sogou-qimpanel-cell sogou-qimpanelkdyzm systemd-private-251274e9dff14256aadaac748704e759-colord.service-Q7u1po systemd-private-251274e9dff14256aadaac748704e759-rtkit-daemon.service-I81zdW systemd-private-251274e9dff14256aadaac748704e759-systemd-timesyncd.service-SrkrjY unity_support_test.0 kdyzm@kdyzm:~$?echo?$?0kdyzm@kdyzm:~$?ls?/templs:?cannot?access?/temp:?No?such?file?or?directory kdyzm@kdyzm:~$?echo?$?2kdyzm@kdyzm:~$

二、如何實現變量引用

使用${VARNAME}實現變量引用,其中大多數情況下{}能夠直接省略,不能省略的情況:

kdyzm@kdyzm:~$?ANIMAL=pig kdyzm@kdyzm:~$?echo?"there?are?some?${ANIMAL}s" there?are?some?pigs kdyzm@kdyzm:~$

以上echo命令之后必須使用"",而不能使用'',這是因為""是弱引用,變量能夠被解析,''是強引用,變量不能被解析。

kdyzm@kdyzm:~$?echo?'there?are?some?${ANIMAL}s' there?are?some?${ANIMAL}s kdyzm@kdyzm:~$

三、雜項

??? 1.如果腳本是在命令行中執行的,那么該腳本能夠直接訪問當前shell定義的變量,但是如果是非命令行運行的腳本,就必須手動配置環境變量了。

??? 2./dev/null是一個數據黑洞,可以將不需要顯示的數據都重定向到這里丟棄掉。

????3.使用unset命令能夠解除變量綁定,釋放內存空間。

????4.如何查看當前shell的環境變量

????????使用printenv、env、export三個命令都能夠查看當前bash中的環境變量。

????5.如何運行一個腳本

????????指定腳本的路徑,回車即可。需要注意的是如果腳本文件在當前路徑下,也需要指定./作為當前路徑的標志,否則直接使用文件名會提示找不到命令,原因就是命令行默認認為你輸入的是命令,所以回到PATH路徑下找,結果沒找到,就會報錯。

kdyzm@kdyzm:~$?command.sh command.sh:?command?not?found kdyzm@kdyzm:~$?./command.sh? Hello,World!

????????注意創建腳本文件之后一定要加上“可執行”權限,因為默認創建的文本文件是不可執行的。

chmod?a+x?./command.sh

????????如果不想給腳本文件加上可執行權限但是還想要執行該腳本的話,直接使用

bash?FILE

????????即可執行。

四、如何寫一個腳本

????在寫一個腳本之前必須指定“魔數”,指定魔數的作用就是告訴系統到哪里去找“解析器”解析腳本內容,在使用bash的情況下,指定魔數的方法是:

#!?/bin/bash

????接下來就是一些命令的堆砌,實際上腳本編程就是那么簡單。

五、條件測試

????1.條件測試類型包括整數測試、字符測試、文件測試

????2.條件測試的三種命令

[?expression?] [[?expression?]]????#}"[["是bash中的關鍵字,而[不是 test?expression

????3.整數比較的操作符

-eq????#測試兩個數是否相等 -ne????#測試兩個書是否不想等 -lt????#小于比較測試 -gt????#大于比較測試 -le????#小于等于測試 -ge????#大于等于測試

????4.命令之間的邏輯關系

&&????#與關系 ||????#或關系

六、條件判斷

????1.條件判斷的結構如下:

if?判斷條件;thenstatement1statement2 elif????statement3statement4???? elsestatement5statement6 fi

????2.判斷命令執行結果返回值還是判斷命令執行狀態返回值

????????命令執行結果返回值:命令執行的返回值

????????命令執行狀態返回值:只有兩個結果,一個是0表示執行成功,非0表示執行失敗,使用$?可以查看改值。

????????舉例:該處的判斷條件判斷的是命令執行狀態返回值

#!?/bin/bash if?id?user2?&>?/dev/null;thenecho?"user1存在!" elseecho?"user1不存在!" fi

七、練習

????1.給出一個用戶名,判斷該用戶是管理員還是普通用戶

#!?/bin/bash NAME=kdyzm USERID=`id?-u?$NAME` if?[?$USERID?-eq?0?]?;thenecho?"Admin?User" elseecho?"Common?User" fi

????2.編寫一個腳本,判斷是否有用戶的默認shell為bash,如果有,則顯示有多少個這類用戶,否則就顯示沒有這類用戶。

#!?/bin/bash USERS=`grep?"bash$"?/etc/passwd?|?wc?-l` if?[?$USERS?-eq?0?]?;thenecho?"沒有默認shell為bash的用戶存在!" elseecho?"使用bash為默認shell的用戶數量為:$USERS" fi

????



轉載于:https://blog.51cto.com/kdyzm/1740334

總結

以上是生活随笔為你收集整理的【Linux学习009】脚本编程之变量、条件测试和条件判断的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。