Shell指令碼語言基礎五

2021-08-19 23:40:48 字數 4841 閱讀 7868

內容一:shell指令碼語言-管道

分析場景:有時候我們需要乙個命令的輸出作為另外乙個命令的輸入

語法結構:command1 | command2

command1-相當於你

「|」 -相當於**

command2 -女朋友

內容二:shell指令碼語言-重定向

重定向目的:就是操作檔案輸入和輸出

1、學習-輸入、輸出重定向-控制台、檔案

1.1 輸入重定向-語法

語法結構:wc檔名稱

1.1.1 「<」 輸入重定向

命令**:wc a.sh

j將a.sh中內容讀取到控制台

wc讀取到了三個重要資訊

第乙個引數:文字行數

第二個引數:文字詞數

第三個引數:文字位元組數

1.1.2 "<<" 建立檔案

cat命令

1.2 輸出重定向

1.2.1 ">" 我們把方向指向乙份檔案,那麼將檔案中的內容刪除,寫入新的內容

指令碼文科a.sh**

#!/bin/bash

echo "我是檔案a"

指令碼檔案b.sh**

#!/bin/bash

echo "我是檔案b"

echo "北京歡迎你" >a.sh

執行指令碼**:

./b.sh

總結:替換內容-將b.sh輸出內容替換了a.sh中內容

1.2.2 ">>"追加

2、"expr"命令深入研究

"+"."-"."*"."/"等

方式一 指令碼**

#!/bin/bash

a=100

b=200

val=`expr $a + $b`

echo "val值:$val"

總結:其他運算子一樣

方式二 #!/bin/bash

a=100

b=200

val=$(expr $a + $b)

echo "val值:$val"

方式三 #!/bin/bash

a=100

b=200

val=$[$a + $b]

echo "val值:$val"

3、浮點數

3.1 bash基本用法

bash計算器-實際上是一種程式語言,這個允許在命令中輸入浮點數表示式,然後解釋並且計算表示式,最後返回結果

bash計算器識別哪些型別

1.數字:整數、浮點數

2.變數:簡單變數陣列

3、注釋:表示式、函式等

3.2 案例學習

直接在命令列輸入:bc命令,然後進行計算

解釋一下bc命令:在shell指令碼語言中提示符下通過bc命令訪問bash計算器

第一步:輸入bc命令-開啟計算器

命令:bc

輸出結果:

bc 1.06

this is free software with absolutely no warranty.

for details type `warranty'.

第二步:開始計算

在控制台輸入:10 * 100

第三步:退出計算器

輸入命令:quit命令

3.3 將bash計算器應用到我們shell語言指令碼中

語法結構:val=$(echo "options;expression"|bc)

解釋語法:

options:選項-可以設定精度

expression:表示式

案例一:基本語法展示

#!/bin/bash

val=$(echo "1.5655 * 100" | bc)

echo "val值:$val"

總結:1.5655 * 100 --表示式expression

案例二:分析問題-稍微複雜一點計算

#!/bin/bash

val1=1.314

val2=0.618

val3=$(echo "$val1 * $val2" | bc)

val4=$(echo "$val3 * $val2" | bc)

echo "val4結果:$val4"

總結:比較簡單計算沒有問題,複雜計算很麻煩

案例三:bc命令+輸入重定向

語法格式:

val=$(bc<> b.sh

注意:"who"命令列印當前系統使用者資訊

第二點:重定向錯誤-輸出到檔案中

執行**:ls -al a.sh > error.sh

注意:"-al" 檔案列表

5、重定向錯誤資訊

5.1 只重定向錯誤

1、將stderr檔案描述修改為2

2、將stdout和stderr結合使用

第一步:執行命令

ls -al a.sh b.sh c.sh 2> error.sh

第二步:檢視結果

-rwxr-xr-x@ 1 wisdom staff 16 5 14 09:41 a.sh

-rwxr-xr-x@ 1 wisdom staff 254 5 14 17:44 b.sh

error.sh

ls: c.sh: no such file or directory

3、將資料和錯誤資訊,同時輸出到同乙個檔案

"&" :重定向結構

第一步:

執行命令 :ls -al a.sh b.sh c.sh &> error.sh

第二步:檢視檔案內容

cat error.sh

6、重定向輸出-深入一點

6.1 臨時重定向 "&"

指令碼**

echo "hello world" >&2

echo "你好"

執行結果

./b.sh

案例二案例二含義:將b.sh中標記的錯誤資訊,全部儲存到error.sh中,通過stderr重定向到error.sh裡面

指令碼**:

#!/bin/bash

echo "hello world" >&2

echo "你好" >&2

echo "北京歡迎你"

執行**

./b.sh 2> error.sh

6.2永久重定向

案例一:儲存資料

指令碼**

#!/bin/bash

exec 1> filecontent.sh

echo "hello world"

echo "你好"

echo "北京歡迎你"

exec命令:批量輸出

執行指令碼

./b.sh

案例二:儲存錯誤資訊 + 儲存資料

指令碼**

#!/bin/bash

exec 1> filecontent.sh

echo "hello world"

echo "你好"

echo "北京歡迎你"

exec 2>error.sh

echo "報錯了" >&2

echo "不好意思拉"

執行指令碼

./b.sh

7、重定向輸入-深入一點

指令碼**

#從filecontent.sh檔案中讀取內容到b.sh

exec 0< filecontent.sh

count=1

while read line

doecho "當前行數 $count 讀取內容:$line"

count=$[ $count + 1]

done

執行命令

./b.sh

8、建立自己重定向

0、1、2系統預設提供的,那麼我們自己可以自定義3,4,5

8.1 建立自己(自定義)輸入檔案描述

案例一:建立新的檔案或者替換內容

指令碼**

#!/bin/bash

#exec命令:自定義檔案描述符

exec 40> filecontent.sh

echo "北京"

echo "你好好" >&40

echo "深圳"

執行指令碼

./b.sh

案例二:追加內容

指令碼**

#!/bin/bash

#exec命令:自定義檔案描述符

exec 40>> filecontent.sh

echo "北京"

echo "你好好2" >&40

echo "深圳"

執行指令碼

./b.sh

8.2 恢復原始檔案描述符

原來是1,然後修改為2,最後恢復到1

指令碼**

#!/bin/bash

#exec命令:自定義檔案描述符

#最開始是3,然後重定向到1

exec 3>&1

exec 1>filecontent.sh

echo "吃午飯"

echo "黃燜雞"

#將1還原到3

exec 1>&3

echo "搞完了"

執行指令碼

./b.sh

8.3 建立輸入檔案描述符

#!/bin/bash

#exec命令:自定義檔案描述符

exec 6<&0

exec 0filecontent.sh

#從filecontent.sh檔案裡面讀取內容

read line <&3

echo "read:$line"

#寫入內容

echo "青藏高原" >&3

注意:替換了第二行,因為檔案指標讀取完了第一行,檔案指標指向了第二行,所以第二行之後所有的內容被替換

指令碼語言 shell指令碼

指令碼語言的特徵 指令碼語言 於批處理命令語言,但更接近於程式語言。與批處理命令語言的差別是,指令碼語言有變數和豐富的控制語句 與一般程式語言的差別是 指令碼語言變數的值主要是字串,語言的基本單位是命令 而程式語言變數主要是數值,語言的基本單位是表示式 指令碼語言一般是解釋執行的,速度低,但開發成本...

shell指令碼語言

現在流行的指令碼語言有很多,例如php perl python shell等等,這些指令碼語言都有自己的牛x的地方。shell指令碼語言在unix linux系統上用途廣泛,它的優勢在於處理作業系統底層的業務,它利用大量的命令和函式來實現強大的功能,例如一鍵安裝 報警等等。1 在編寫指令碼語言的時候...

指令碼語言 Shell

2017 03 12 1 date 格式化輸出時間時 與格式化字串不能有空格,例如輸出月 日 date m d,date用法見date help 2 輸出自1970 01 01 00 00 00至當前的時間戳 date s 3 shell 預設是進行字串計算,可以使用 表 達式 進 行轉換。4 運算...