Shell程式設計筆記

2022-04-03 17:08:39 字數 2951 閱讀 8685

#!/bin/bash

echo "hello world !"

1、作為可執行程式

將上面的**儲存為 test.sh,並 cd 到相應目錄:

chmod u+x ./test.sh  #使指令碼具有執行許可權./test.sh  #執行指令碼

2、作為直譯器引數

這種執行方式是,直接執行直譯器,其引數就是 shell 指令碼的檔名,如:

/bin/sh test.sh

/bin/php test.php

使用變數

your_name="qinjx"

echo $your_name

echo $

echo "i am good at $script"

readonly修飾為唯讀

unset 命令可以刪除變數

unset variable_name

shell不支援浮點數,小數運算示例如下

1、借助bc處理示例:計算5.01-4*2.0,得到的結果為-2.9912

$ c=$(echo"5.01-4*2.0"|bc)

$echo$c

2、借助awk處理示例:計算7.01*5-4.01,得到的結果為31.0512

$ c=$(awk'begin')

$ echo $c

注:在shell 中$() 與 ``等效。 中間包含命令語句執行,返回執行結果。

單引號字串的限制:

雙引號的優點:

your_name="qinjx"greeting="hello, "$your_name" !"greeting_1="hello, $ !"echo $greeting $greeting_1

string="abcd"echo $#輸出 4

string="runoob is a great site"echo $# 輸出 unoo

string="runoob is a great company"echo `expr index "$string" is`# 查詢is,輸出 8。指令碼中 "`" 是反引號,而不是單引號 "'"

陣列

array_name=(value0 value1 value2 value3)

array_name[0]=value0

array_name[1]=value1

array_name[n]=valuen

讀取陣列的值

valuen=$

使用@符號可以獲取陣列中的所有元素,例如:

echo $

# 取得陣列元素的個數length=$# 或者length=$

擷取字串

1. #

號擷取,刪除左邊字元,保留右邊字元。

echo $

其中 var 是變數名,#

號是運算子,*// 表示從左邊開始刪除第乙個 // 號及左邊的所有字元

即刪除 http://結果是 :www.aaa.com/123.htm

2. #

# 號擷取,刪除左邊字元,保留右邊字元。

echo $

##*/ 表示從左邊開始刪除最後(最右邊)乙個 / 號及左邊的所有字元

即刪除 結果是 123.htm

3. %號擷取,刪除右邊字元,保留左邊字元

echo $

%/* 表示從右邊開始,刪除第乙個 /號及右邊的字元

結果是:

4. %%號擷取,刪除右邊字元,保留左邊字元

echo $

%%/* 表示從右邊開始,刪除最後(最左邊)乙個 /號及右邊的字元

結果是:http:

5. 從左邊第幾個字元開始,及字元的個數

echo $

其中的 0 表示左邊第乙個字元開始,5表示字元的總個數。

結果是:http:

printf 

格式化輸出

printf "%-10s %-8s %-4s\n"姓名性別體重kg  

printf "%-10s %-8s %-4.2f\n"郭靖男66.1234

%s %c %d %f都是格式替代符

%-10s 指乙個寬度為10個字元(-表示左對齊,沒有則表示右對齊),

%-4.2f 指格式化為小數,其中.2指保留2位小數。

# 如果沒有 arguments,那麼 %s 用null代替,%d 用 0 代替
# 格式只指定了乙個引數,但多出的引數仍然會按照該格式輸出,format-string 被重用printf %s abc defprintf "%s\n"abc defprintf "%s %s %s\n"a b c d e f g h i j

流程控制

if condition1

then

command1

elif condition2

then

command2

else

commandn

fi

檔案包含

#使用 . 號來引用test1.sh 檔案

. ./test1.sh

# 或者使用以下包含檔案**

# source ./test1.sh

shell程式設計筆記

第一天學習shell程式設計,自己做的筆記 test1 bin sh judge dir exist if d data 20140515 then mkdir p data 20140515 else echo this dir is exist,please exit fi bin sh sco...

shell程式設計筆記

if 1 eq 1 a 2 2 then echo true elif 1 lt 2 o 3 gt 4 then echo else echo false fi gt lt ge le eq ne a o if f 1.sh echo 1.sh exists if e 1.sh then echo ...

Shell程式設計筆記

1,變數命名規則 your name runoob.com 注意,變數名和等號之間不能有空格,這可能和你熟悉的所有程式語言都不一樣。同時,變數名的命名須遵循如下規則 命名只能使用英文本母,數字和下劃線,首個字元不能以數字開頭。中間不能有空格,可以使用下劃線 不能使用標點符號。不能使用bash裡的關鍵...