內容一: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 運算...