編寫Shell指令碼

2021-08-21 20:25:21 字數 2296 閱讀 2594

獲取變數的方式:

1、echo $path

2、echo $

3、echo "$path"

引數的提取:

$# *****= 引數的個數

$n *****= 第n個引數

$0 *****= 當前指令碼名稱

$@ *****= 取出所有引數

shift *****= 引數左移

執行過程:

2、編寫指令碼內容(單獨講解)

3、新增執行許可權:chmod a+x abc.sh

4、當前目錄執行:./abc.sh

指令碼編寫:

1、編寫指令碼頭:#! /bin/bash *****= 宣告指令碼直譯器(不寫時會有預設的直譯器)

2、注釋的編寫:以"#"作為標識,單行注釋!

3、編寫指令碼內容:echo helloworld

for...in語句:

for x in `cat a.txt`; do echo $x; done *****= 迴圈取出檔案中的所有單詞,並迭代輸出

for(())語句:

for(( i=0; i<10; i++ )); do echo $i; done

for99.sh(列印九九乘法表):

#!/bin/bash

for((i=1; i<10; i++)); do

for((j=1; j<=i; j++)); do

echo -en "$j"x"$i"=$((j*i))"\t";

done

echo;

done

shift.sh(測試shift的作用):

#!/bin/bash

for((i=1; i<10; i++));do

echo $@

shift;

done

執行該指令碼:./shift.sh 1 2 3 4 5 6 7 8 9

if語句:

語法:if ...; then ...;elif ...; then ...;else ...; fi

if字串變數表示式:

if [ $a=$b ] *****= 符號"="用作賦值時兩邊不能有空格

if [ $a = $b ] *****= 符號"="用作判斷時兩邊必須有空格

if [ -n $a ] *****= 變數a非空,等價於:if[ $a ]

if [ -z $a ] *****= 變數a為空

if整數變數表示式:

if [ a -eq b ] *****= a等於b

if [ a -gt b ] *****= a大於b

if [ a -lt b ] *****= a小於b

if [ a -ne b ] *****= a不等於b

if [ a -ge b ] *****= a大於等於b

if [ a -le b ] *****= a小於等於b

age.sh(判斷年齡對應的是少年、中年還是晚年):

#!/bin/bash

i=10

if [ $i -lt 30 ];

then echo young;

elif [ $i -lt 50 ];

then echo middle;

else echo old;

fi

while語句:

while9.sh:

#!/bin/bash

i=1while(($i<10));do

echo $i

i=$((i+1));

done

while99.sh:

#!/bin/bash

i=1while((i<10)); do

j=1while((j<=i)); do

echo -ne "$j"x"$i"=$((j*i))"\t"

j=$((j+1));

done

i=$((i+1))

echo;

done

case語句:

case.sh:

#!/bin/bash

case $1 in

helloworld | tom ) echo 1 ;;

hello ) echo 2 ;;

* ) echo 3 ;;

esac

使指令碼在每個目錄都能識別並執行:將指令碼放在/usr/local/bin下

Shell 指令碼編寫

shell 指令碼與 windows dos 下的批處理相似,也就是用各類命令預先放入到乙個檔案中,方便一次性執行的乙個程式檔案,主要是方便管理員進行設定或者管理用的。但是它比 windows 下的批處理更強大,比用其他程式設計程式編輯的程式效率更高,它使用了 linux unix 下的命令。方法一...

shell指令碼編寫

echo echo n不換行輸出,echo e會處理特殊字元,比如有 n則會換行 printf 不自動換行輸出 print 自動換行輸出 傳遞到指令碼的引數個數 以乙個單字串顯示所有向指令碼傳遞的引數。指令碼執行的當前程序id號 後台執行的最後乙個程序的id號 與 相同,但是使用時加引號,並在引號中...

shell指令碼編寫注意

這八個建議,於鍵者幾年來編寫 shell 指令碼的一些經驗和教訓。事實上開始寫的時候還不止這幾條,後來思索再三,去掉幾條無關痛癢的,最後剩下八條。毫不誇張地說,每條都是精挑細選的,雖然有幾點算是老生常談了。shell 指令碼的第一行,之後應該是什麼?如果拿這個問題去問別人,不同的人的回答可能各不相同...