linux shell程式設計基礎

2021-09-08 20:55:44 字數 3920 閱讀 7645

指令碼檔案要在第一行頭部以相應的格式寫明bash的路徑,例,#!/bin/bash

將指令碼檔案作為bash的引數,交由bash直譯器執行

還可以使用shell內建命令source/.執行,source和 . 功能相同

特殊變數:$?,$0等等

b.sh:

echo $1 #輸出第乙個引數tom

shift 1 #去掉了第乙個引數

echo $1 #此時her就成了第乙個引數,所以會輸出her

[root@vm1 scripts]$ ./b.sh tom her

tomher

環境變數:環境變數的定義即把定義好的本地變數匯出為環境變數

唯讀變數:

變數引用:使用$的方式引用,一般情況{}可以省略,$後直接加變數名。

[root@vm1 scripts]# a="num"

[root@vm1 scripts]# b=$a

[root@vm1 scripts]# c='$a'

[root@vm1 scripts]# d="$a"

[root@vm1 scripts]# echo $b

num[root@vm1 scripts]# echo $c

$a[root@vm1 scripts]# echo $d

num

測試某需求是否滿足,這就需要我們的測試機制來實現。

bash的測試型別

字串測試:

檔案測試:

if condition1

then

command1

elif condition2

then

command2

else

commandn

fi

case 值 in

模式1)

command

;;模式2)

command

;;esac

#!/bin/bash

i=$1

case $i in

1) echo "input is 1"

;;2) echo "input is 2"

;;esac

echo "done"

#!/bin/bash

if [ $# -lt 1 ]; then

echo "至少給乙個引數"

exit 1

fiif id $1 &>/dev/null ;then

echo "使用者已存在"

else

useradd $1

[ $? -eq 0 ] && echo "$1"| passwd --stdin $1 &> /dev/null

echo "使用者新增成功"

fi

shell實現迴圈有三種方式,可以與continue,break等控制語句一塊使用:

#!/bin/bash

for i in $*;do #遍歷輸出所有引數

echo $i

done

for i in ;do #遍歷1到10

echo $i

done

#!/bin/bash

# 計算1到100的和

declare -i i=0

declare -i sum=0

while [ $i -lt 100 ];do

let sun+=$i

let i++

done

echo "sum:$sum"

#!/bin/bash

# 計算1到100的和

declare -i i=0

declare -i sum=0

until [ $i -gt 100 ];do

let sun+=$i

let i++

done

echo "sum:$sum"

陣列的賦值

#!/bin/bash

#生成10個隨機數賦給乙個陣列,並求出最大值

max=0

for i in ;do

array[$i]=$random # $random可隨機生成乙個1到32767的數字

echo $

[ $ -gt $max ] && max=$

done

echo "max:$max"

獲得陣列的長度:echo $或echo $

輸出陣列的所有元素:echo $,也可以使用@符號,它與獲得陣列長度就是差了#號。

陣列切片

向陣列中追加元素:array[$]=value

刪除陣列中某個元素:unset array[index],刪除後這個位置會變成空

$:同上,不過是刪除從字串開頭到最後一次匹配到word的地方。

$:從右至左,查詢str字串中第一次匹配到的word字元,刪除字串的最後乙個字元到word第一次出現的地方之間的所有字串。

$:同上,不過是刪除從最後乙個字串到最後一次匹配到word字元之間的所有字串。

$:查詢str所表示的字串中所有被pattern匹配的字串,替換成replace

$:查詢行首被pattern匹配的字串,並使用replace替換匹配到的字串

$:查詢行尾pattern匹配的字串,並使用replace替換匹配到的字串

read命令可以用在指令碼中做互動

-t:設定過期時間,read在等待使用者輸入資料時不可能無止境的等待,可以設定等待時間。

主要用於指令碼中,與使用者做互動,例:

#!/bin/bash

read -p "enter username:" name

useradd $name

echo "useradd success"

它是模仿c裡面的printf 語句,相比echo有更好的移植性。

轉義字元序列:

function 函式名

函式名()

#!/bin/bash

function print

for i in ;do

str=hello$i

print

done

區域性變數:在函式中定義區域性變數要使用local關鍵字

返回值:函式的返回值即函式中最後一條語句的返回值

配置檔案t.conf內:

host=wuuu

#!/bin/bash

[ -r /scripts/t.conf ] && source /scripts/t.conf

myhostname=$host

echo $myhostname

輸出:wuuu

Linux Shell程式設計基礎

簡單學習了一下shell 程式設計的一些基礎知識,這裡作各總結吧。1,變數 shell變數分為本地變數,環境變數,位置變數和預定義變數 1 本地變數 本地變數是只能在使用者寫的shell指令碼生命週期中有效的變數,在使用者的shell退出之後,該變數就不存在了。一般的定義格式為 local vari...

Linux shell指令碼程式設計基礎

把指令碼路徑寫入 path變數。帶上路徑執行,需要執行許可權。bash bash後跟上指令碼,該方法指令碼不需要執行許可權也能執行。bash 讀入指令碼內容,通過管道符交給bash執行。當前主機遠端呼叫其他主機的指令碼。1.宣告shell型別 bin bash 2.變數 3.函式 4.主程式 在編寫...

Linux Shell指令碼程式設計基礎(1)

1.我們一般在使用linux系統的時候,都活接觸到shell指令碼的使用,例如我們經常在linux系統中使用的ls命令 cd命令等,都是衣蛾簡單而又基本的shell命令,在 linux系統中我們一般的使用如下的格式來進行shell指令碼的編寫 1 格式 bin bash echo hello wor...