Bash scripts
創(chuàng)建新shell腳本
1. 創(chuàng)建包含bash命令的文本文件。文件的第一行應(yīng)為:
#!/bin/bash
2. 使文件可執(zhí)行(使用chmod +x scripts)
3. 將文件放置在用戶的$PATH的目錄中
~/bin – 用于用戶的私有程序
/usr/local/bin – 本地開發(fā)、系統(tǒng)上的其他人使用的腳本
/usr/local/sbin - 本地開發(fā)、由root使用的腳本
直接運行腳本和使用source命令運行腳本是不同的!
腳本調(diào)試模式:
#!/bin/bash -x
# bash -x scripts
引用和轉(zhuǎn)義
引用和轉(zhuǎn)義在shell解析字符串時用于去除字符串中特殊字符或保留詞語的特殊含義。這會導(dǎo)致按字面處理字符串,而不是展開變量或?qū)⑵洳糠謨?nèi)容視作具有特殊含義。
引用有三種類型:
弱引用
將字符串放置在雙引號中,保留字符串中所有字符的文字值,$、`、\和!字符除外。換言之,變量擴展和命令擴展在雙引號內(nèi)仍起作用。
echo “can I have a $FRUIT”
echo “The current time is $(date +%r).”
強引用
將字符串放置在單引號中,保留字符串中所有字符的文字值,同時禁用所有擴展:
echo “Make $$$ Fast”
rm 'untitled folder'
轉(zhuǎn)義
非引用的\是轉(zhuǎn)義字符。它保留了下一個字符的文字值。(例如,\$PATH是確切的字符串$PATH,而
不是PATH變量的內(nèi)容。)
echo Make \$\$\$ Fast\!
ls untitled\ folder
Shell變量
shell變量用于為稍后在腳本中使用的名稱指定值,并且僅限于shell命令行或從中聲明變量的腳本。
命令替換
命令替換在子shell中執(zhí)行指定命令并用命令輸出替換腳本中的命令替換。
算術(shù)運算符
算術(shù)運算符指的是可以在程序中實現(xiàn)加、減、乘、除等數(shù)學(xué)運算的運算符。
Shell計算命令:
用$[]表示數(shù)學(xué)運算。
# echo $[1+2]
# a=1; echo $[$[$a+1]*2]
用expr表示數(shù)學(xué)運算。
# echo `expr 1 + 2`
用let指示數(shù)學(xué)運算。
# let A=1+2
# echo $A
用(())表示數(shù)學(xué)運算。bash內(nèi)建功能,效率高。
#!/bin/bash
for ((i=1;i<10;i++))
do
((j+=i))
done
echo $j
循環(huán)
for循環(huán)用于值列表中的相同命令的重復(fù)。
循環(huán)與計算結(jié)合:
Bash位置參數(shù)
使用位置參數(shù)來讀取傳遞給腳本的命令行參數(shù)或選項輸入。各種特殊變量存儲傳遞的選項編號
Bash解析的個別參數(shù)或整個原始命令行。
指定的位置參數(shù)總數(shù):$#
位置參數(shù)自身:$0、$1、$2、$3....
所有位置參數(shù): $@、$*
退出狀態(tài)
Linux命令完成時,將返回退出狀態(tài)。成功完成程序時,將返回0的推出狀態(tài)。這被bash
當(dāng)作邏輯True值。非零退出狀態(tài)通常表示發(fā)生了錯誤,并且被bash當(dāng)作邏輯False值。
例如:grep的退出狀態(tài)的含義:
0 – 在指定的文件中找到了模式
1 – 在指定的文件中未找到模式
>1 – 一些其他錯誤(無法打開文件、錯誤的搜索表達式等)
推出狀態(tài)的值被存儲在"?"中,可以使用以下命令查看:
# echo $?
test條件判斷
test命令可用于評估bash腳本中的表達式。它評估其參數(shù)所指定的表達式,如果表達式
為true,返回零退出狀態(tài),如果表達式為false,則返回非零退出狀態(tài)。test具有替代語
法,使用方括號"[]"將表達式括起來,這樣更易于閱讀。
-n??????? ##有無數(shù)值
-z????? ##是否為空
-e?????? ##是否存在
-d?????? ##類型為目錄i
-f??????? ##類型為文件
-s ????? ##類型為socket
-L?????? ##類型為link
-eq???? ##等于
-ne???? ##不等
-lt??????? ##小于
-le?????? ##小于等于
-gt????? ##大于
-ge???? ##大于等于
if語句
if命令檢查if后面的命令或列表的退出值。如果第一個命令評估為true/零,則運行then之后的命令列表,直至任一else。如果第一個命令評估為false/非零,則運行else與fi之間的命令列表(反向平寫if,標(biāo)記if塊的結(jié)束)。
case語句
case語句 :它能夠把變量的內(nèi)容與多個模板進行匹配,再根據(jù)成功匹配的模板去決定應(yīng)該執(zhí)行哪部分代碼.
expect語句
在shell中利用expect實現(xiàn)自動應(yīng)答腳本。
倒數(shù)五秒計時腳本
測試和其他主機是否連通
判斷文件類型
本文轉(zhuǎn)自Super_MONKEY 51CTO博客,原文鏈接:http://blog.51cto.com/supermk/1940558
總結(jié)
以上是生活随笔為你收集整理的Bash scripts的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Git创建仓库
- 下一篇: asp.net缓存机制