国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

簡單shell腳本的編寫

這篇具有很好參考價值的文章主要介紹了簡單shell腳本的編寫。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

shell腳本就是將命令寫入文本中,文本可以被執(zhí)行。

腳本:本質(zhì)是一個文件,文件里面存放的是 特定格式的指令,系統(tǒng)可以使用腳本解析器 翻譯或解析 指令 并執(zhí)行(它不需要編譯)

shell 既是應(yīng)用程序,又是一種腳本語言(應(yīng)用程序 解析 腳本語言)。

簡單使用

$0 表示當(dāng)前腳本的名稱
$* 表示腳本的所有參數(shù)
$# 表示腳本的參數(shù)的個數(shù)
$? 程序執(zhí)行完后的結(jié)果,返回值0表示執(zhí)行成功

$n 表示腳本的第n個參數(shù),n=1,2,3,4,5…9

#!bin/bash
echo "當(dāng)前腳本的名稱為$O"

雙引號會解釋變量

單引號會把變量當(dāng)成字符串表示

沒有給這個腳本賦予可執(zhí)行權(quán)限就用bash來執(zhí)行該腳本

簡單shell腳本的編寫,Linux,shell,linux

#!bin/bash
echo "當(dāng)前腳本的名稱為$O"
echo "總共有$#個參數(shù),分別是$*"

簡單shell腳本的編寫,Linux,shell,linux

#!bin/bash
echo "當(dāng)前腳本的名稱為$O"
echo "總共有$#個參數(shù),分別是$*"
echo "第一個參數(shù)是$1,第三個參數(shù)是$3"

簡單shell腳本的編寫,Linux,shell,linux

shell腳本參數(shù)判斷

  • 1、文件測試語句
    • -d 測試文件是否是目錄類型
      • 是目錄返回0,不是目錄返回非0
    • -e 測試文件是否存在
    • -f 判斷是否為一般文件
    • -r 判斷當(dāng)前用戶對該文件是否有==讀取==權(quán)限
    • -w 判斷當(dāng)前用戶對該文件是否有==寫入==權(quán)限
    • -x 判斷當(dāng)前用戶對該文件是否有==執(zhí)行==權(quán)限
  • 2、邏輯測試語句
  • 3、整數(shù)值測試語句
  • 4、字符串比較語句

判斷/etc/passwd是否為目錄

┌──(kali??kali)-[~/Desktop]
└─$ [ -d  /etc/passwd ]
                                                                            
┌──(kali??kali)-[~/Desktop]
└─$ echo $?                                                             1 ?
1
#  $?表示上一步的結(jié)果,用echo 輸出  

返回值為1,表示/etc/passwd不是目錄

┌──(kali??kali)-[~/Desktop]
└─$ ls
demo.sh  zs
                                                                            
┌──(kali??kali)-[~/Desktop]
└─$ [ -d  zs ]    
                                                                            
┌──(kali??kali)-[~/Desktop]
└─$ echo $?
0                                                                        

簡單shell腳本的編寫,Linux,shell,linux

┌──(kali??kali)-[~/Desktop]
└─$ [ -d  demo.sh ]
                                                                            
┌──(kali??kali)-[~/Desktop]
└─$ echo $?                                                             1 ?
1

簡單shell腳本的編寫,Linux,shell,linux

一條命令完成上述命令 &&

&& 必須保證兩邊都為真,條件才會成立,有一邊為假條件都不會成立

┌──(kali??kali)-[~/Desktop]
└─$ [ -f  /etc/passwd ] && echo "該/etc/passwd是文件"                  
該/etc/passwd是文件      


# [ -f  /etc/passwd ]  為真,確實是文件,
# 則執(zhí)行后面的echo語句

簡單shell腳本的編寫,Linux,shell,linux

┌──(kali??kali)-[~/Desktop]
└─$ [  $USER=kali ] && echo "該用戶是kali用戶"
該用戶是kali用戶
                   

簡單shell腳本的編寫,Linux,shell,linux

|| 兩邊有一個為真就為真,兩邊都為真也為真

┌──(kali??kali)-[~/Desktop]
└─$ [ $USER=kali ] ||   echo "該用戶是kali用戶"                                     

! 表示取反

┌──(kali??kali)-[~/Desktop]
└─$ [ ! $USER=kali ] ||   echo "該用戶是kali用戶"
該用戶是kali用戶

要求普通用戶輸出user,管理員用戶輸出superuser

[ ! $USER = kali ] &&  echo "superuser" || echo "user"

簡單shell腳本的編寫,Linux,shell,linux

整數(shù)的比較運算符

-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 等于或小于
-ge 等于或大于
┌──(kali??kali)-[~/Desktop]
└─$ [ 9 -gt 9 ]                                           
                                                               
┌──(kali??kali)-[~/Desktop]
└─$ echo $?                                                
1

簡單shell腳本的編寫,Linux,shell,linux

字符串的比較運算

= 比較字符串內(nèi)容是否相同
!= 比較字符串內(nèi)容是否為空
-z 判斷字符串內(nèi)容是否為空

簡單shell腳本的編寫,Linux,shell,linux

簡單shell腳本的編寫,Linux,shell,linux

┌──(kali??kali)-[~/Desktop]
└─$ [ $LANG = "en_US.UTF-8" ] && echo "支持英文" || echo "支持中文"
支持英文 

簡單shell腳本的編寫,Linux,shell,linux

shell腳本流程控制

if 條件
then 命令
else 命令
fi

if…

#!/bin/bash
DIR="/home/kali/Desktop/demo"
if [ ! -e $DIR]
then 	
	mkdir -p $DIR
fi

if…else…

#!/bin/bash
ping -c 3 -i 0.2 -w 3 $1 &>/dev/null

if [ $? -eq 0 ]
then 
	echo "該$1是正常的"
else
	echo "該$1是不正常的"
fi

簡單shell腳本的編寫,Linux,shell,linux

if…else…多級嵌套

#!/bin/ash
if [ -z $1  ]
then 
	echo "作者:zs"
	echo "該命令是檢測服務(wù)器IP是否正常"
	echo "直接在命令后面加參數(shù)IP就可以執(zhí)行"
else
	ping -c 3 -i 0.2 -w 3 $1 &>/dev/null

	if [ $? -eq 0 ]
	then 
		echo "該$1是正常的"
	else
		echo "該$1是不正常的"
	fi

fi

if…elif…else

read -p "請輸入分?jǐn)?shù) [1--100]:" score
if [ $score -ge 85 ] && [ $score -le 100 ] ;then
	echo "優(yōu)秀"
elif [ $score -ge 70 ] && [ $score -le 84 ] ;then
	echo "合格"
else
	echo "不合格"
fi

簡單shell腳本的編寫,Linux,shell,linux

shell腳本循環(huán)

for循環(huán)
for 變量名 in 取值列表
do
 命令序列
done
批量添加用戶

簡單shell腳本的編寫,Linux,shell,linux

#!/bin/bash
#循環(huán)語句
read -p "請輸入密碼:" PASSWORD

for USERNAME  in  `cat user.txt`
do
	id $USERNAME &>/dev/null
	if [ $? -eq 0 ]
	then 
		echo "該用戶$USERNAME 已經(jīng)存在"
	else
		useradd $USERNAME &>/dev/null
		echo "$PASSWORD"| passwd --stdin $USERNAME &>/dev/null
		echo "該用戶$USERNAME添加成功"
	fi
done
批量ping IP地址

簡單shell腳本的編寫,Linux,shell,linux

#!/bin/bash
#批量pingIP地址
HOSTLIST=$(cat /home/kali/Desktop/iplist.txt)
for IP in $HOSTLIST
do 
	ping -c 3 -i 0.2 -w 3 $IP &>/dev/null
	if [ $? -eq 0 ]
	then
		echo "該IP:$IP是正常的"
	else
		echo "該IP: $IP是ping不通的"
	fi
done

簡單shell腳本的編寫,Linux,shell,linux

檢測同一局域網(wǎng),多臺主機存活情況
#!/bin/bash
read -p "請輸入網(wǎng)絡(luò)位:" NETWORK

for ip in $(seq 100 254)  #seq用于生成數(shù)字100~254
do
	ping -c 3 -i 0.2 -w 3 $NETWORK.$ip &>/dev/null  && result=0 || result=1
	if [ $result -eq 0 ];then
		echo "IP地址: $NETWORK.$ip is up !!"
		echo $NETWORK.$ip >> /tmp/up.txt
	else
		echo "IP地址: $NETWORK.$ip is down !!"
		echo $NETWORK.$ip >> /tmp/down.txt
	fi
done

簡單shell腳本的編寫,Linux,shell,linux

多線程檢測主機存活情況

echo輸入帶顏色的內(nèi)容相關(guān)博客

#!/bin/bash
read -p "請輸入IP網(wǎng)絡(luò)位:" ip  
for i in $(seq 1 254) #seq用于生成數(shù)字1~254
    do
    { 
           ping $ip.$i -c1 -s1 2>&1 1>/dev/null &&  
           echo -e ping $ip.$i"\033[32m通的!\033[0m" || 
        echo -e ping $ip.$i"\033[31m不通的!\033[0m" 
        } &  #注意在shell中不支持多線程的.這里&是采用多進程執(zhí)行方式,{}里執(zhí)行了,不管結(jié)束沒結(jié)束繼續(xù)執(zhí)行下一條.
 
done
wait #{}執(zhí)行完,執(zhí)行下一條,相當(dāng)于高級語言多線程同步作用.
echo "掃描檢測已結(jié)束。"

簡單shell腳本的編寫,Linux,shell,linux

while循環(huán)
while 條件
do
	命令序列
done

$RANDOM是linux中的內(nèi)置變量,可以隨機生成0-32767之間的整數(shù)數(shù)字

簡單shell腳本的編寫,Linux,shell,linux

#!/bin/bash
TIMES=0
echo "該商品的價格為0--999之間,來猜一猜!"
PRICE=$(expr $RANDOM % 1000 )
while true
do
	read -p "請輸入價格:" INT
	let TIMES++                       #自增
	if [ $INT -eq $PRICE ];then
		echo "恭喜你猜對了,價格為$PRICE"
		echo "猜了$TIMES次"
		exit
	elif [ $INT -gt $PRICE ];then
		echo "猜高了"
	else
		echo "太低了"
	fi
done

簡單shell腳本的編寫,Linux,shell,linux

case選擇語句
case 變量值 in 
模式1
	命令序列1
模式2 
	命令序列2
....
	默認(rèn)命令序列
esac
#!/bin/bash
read -p "請輸入一個字符:" KEY
case "$KEY" in
	[a-z]|[A-Z])
		echo "這是字母"
		;;
	[0-9])
		echo "這是數(shù)字"
		;;
	*)
		echo "這是特殊符號"
esac

簡單shell腳本的編寫,Linux,shell,linux文章來源地址http://www.zghlxwxcb.cn/news/detail-683198.html

到了這里,關(guān)于簡單shell腳本的編寫的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • C語言,Linux,靜態(tài)庫編寫方法,makefile與shell腳本的關(guān)系。

    C語言,Linux,靜態(tài)庫編寫方法,makefile與shell腳本的關(guān)系。

    靜態(tài)庫編寫: 編寫.o文件 gcc -c( 小寫) seqlist.c(需要和頭文件、main.c文件在同一文件目錄下) libs.a- 去掉lib與.a剩下的為庫的名稱‘s’。 -ls 是指庫名為s。 -L 庫的路徑。 makefile文件編寫: 這個是編譯后的文件,app文件為編譯后的二進制文件。? ? ? makefile與shell腳本關(guān)系 shell?腳

    2024年02月12日
    瀏覽(23)
  • Linux【腳本 05】交互式shell腳本編寫及問題處理([: ==: unary operator expected)[: ==: 期待一元表達式

    之前寫了Windows的cmd腳本用來保存報告文件: 但是有時候服務(wù)僅在Linux環(huán)境上進行部署,所以要寫一個shell腳本進行報告的保存。 2.1 初始版本 簡單的參數(shù)判斷,這里只給出一個分支,腳本save.sh內(nèi)容如下: 此時如果執(zhí)行腳本時沒有攜帶參數(shù),將會報錯: 這個腳本的問題很多

    2024年02月09日
    瀏覽(19)
  • 簡單shell腳本的編寫

    簡單shell腳本的編寫

    shell腳本就是將命令寫入文本中,文本可以被執(zhí)行。 腳本:本質(zhì)是一個文件,文件里面存放的是 特定格式的指令,系統(tǒng)可以使用腳本解析器 翻譯或解析 指令 并執(zhí)行(它不需要編譯) shell 既是應(yīng)用程序,又是一種腳本語言(應(yīng)用程序 解析 腳本語言)。 簡單使用 $0 表示當(dāng)前

    2024年02月10日
    瀏覽(24)
  • Linux GCC,GDB,Shell腳本,Vim的簡單使用

    Linux GCC,GDB,Shell腳本,Vim的簡單使用

    GCC(GNU Compiler Collection,GNU編譯器套件)是由GNU開發(fā)的編程語言譯器 編譯一個簡單的.c程序: 四步分開寫: 分成兩步: 一步到位:(這個hello就是可執(zhí)行文件,存放程序結(jié)果) 一下編譯多個源文件 gcc -o hello hello.c這種一步到位的方法會將文本文件直接轉(zhuǎn)化成可執(zhí)行文件,這

    2024年02月09日
    瀏覽(28)
  • 一篇文章教會你如何編寫一個簡單的Shell腳本

    一篇文章教會你如何編寫一個簡單的Shell腳本

    Shell腳本概念 Shell 腳本是一種用于自動化執(zhí)行一系列命令和操作的腳本文件。它使用的是 Shell 解釋器(如 Bash、Korn Shell、Zsh 等)來解釋和執(zhí)行其中的命令。Shell 腳本通常用于編寫簡單的任務(wù)和工作流程,可以幫助我們進行系統(tǒng)管理、批量處理、自動化部署等任務(wù)。 以.sh后綴

    2024年02月10日
    瀏覽(30)
  • Linux shell編程學(xué)習(xí)筆記44:編寫一個腳本,將md5sum命令執(zhí)行結(jié)果保存到變量中,進而比較兩個文件內(nèi)容是否相同

    Linux shell編程學(xué)習(xí)筆記44:編寫一個腳本,將md5sum命令執(zhí)行結(jié)果保存到變量中,進而比較兩個文件內(nèi)容是否相同

    在? Linux shell編程學(xué)習(xí)筆記42:md5sum https://blog.csdn.net/Purpleendurer/article/details/137125672?spm=1001.2014.3001.5501 中,我們提到編寫一個在Linux系統(tǒng)下比較兩個文件內(nèi)容是否相同的腳本。 基本思路是: 其中有兩個難點: 1.文件的md5值的獲取 2.md5值的比較 對于第1個難點,我們的解決辦法是

    2024年04月10日
    瀏覽(28)
  • Linux編寫簡易shell

    Linux編寫簡易shell

    思路:? ? ? 所以要寫一個shell,需要循環(huán)以下過程:? 獲取命令行 解析命令行 建立一個子進程(fork) 替換子進程(execvp) 父進程等待子進程退出(wait) 實現(xiàn)代碼:? ????????以上就是本文的全部內(nèi)容,如果對你有幫助,歡迎點贊收藏轉(zhuǎn)發(fā)評論!?

    2024年01月20日
    瀏覽(18)
  • Linux自定義shell編寫

    Linux自定義shell編寫

    經(jīng)過了創(chuàng)建進程,終止進程,進程等待和進程程序替換之后, 我們就可以借助這些知識實現(xiàn)一個簡單的shell命令行解釋器了 溫馨提示: 建議大家自己寫一遍,這些代碼分塊之后每一個函數(shù)都很簡單, 不過實現(xiàn)過程中可能會有各種各樣非常細(xì)枝末節(jié)的地方被我們所忽視 因此可能會發(fā)生

    2024年02月04日
    瀏覽(17)
  • 【Linux之Shell腳本實戰(zhàn)】Linux創(chuàng)建新用戶腳本

    1.要求用戶輸入用戶名和密碼,新建用戶; 2.如果用戶沒有輸入,則提醒退

    2023年04月17日
    瀏覽(13)
  • 【Linux】進程實踐項目 —— 自主shell編寫

    【Linux】進程實踐項目 —— 自主shell編寫

    送給大家一句話: 不管前方的路有多苦,只要走的方向正確,不管多么崎嶇不平,都比站在原地更接近幸福。 —— 宮崎駿《千與千尋》 前幾篇文章,我們學(xué)習(xí)進程的相關(guān)知識: 進程概念,進程替換,進程控制 。熟悉了進程到底是個什么事情,接下來我們來做一個實踐,來

    2024年04月14日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包