指令碼要求
指令碼以#!/bin/bash
開頭
指令碼要有可執行許可權
不給可執行許可權也可以執行但是要用sh來執行
使用者自定義變數
系統變數:$home、$pwd、$shell、$user
等
設定環境變數
通過vim /etc/profile
在檔案中定義乙個環境變數tomcat_home=/opt/tomcat ecport tomcat_home
source /etc/profile重新整理
:位置引數變數
在執行指令碼時如./hello.sh 100 200
我們想要在指令碼中獲取這兩個值則可以使用位置變數
$n
n為數字,0代表
命令本身
,1−9
代表第一
個到第九
個引數如
果超過9
需要使用
大括號括
起來0代表命令本身,1-9代表第乙個到第九個引數如果超過9需要使用大括號括起來
0代表命令本
身,1−
9代表第
乙個到第
九個引數
如果超過
9需要使
用大括號
括起來$*
全部的引數,吧引數看成乙個整體
$#
有多少個引數
$@
全部引數,不過吧每個引數分別對待
預定義變數
shell已經定義好的變數,可以直接在shell指令碼中使用
$$
當前程序號
$!
後台執行的最後乙個程序的程序號
$?
最後一次指令的返回狀態,如果是0則正確執行,非零則證明上乙個指令不正常
&
後台執行的符號
運算子$((表示式))
或$[表示式]
expr m + n注意中間有空格
expr m - n
expr *,/,%乘,除,取餘
條件判斷
if[ condition ]
非空返回true
例項:
if
["ok"
="ok"
]then
echo
"equal"
fi#檔案aaa.txt是否存在
if[ -e /root/aaa.txt ]
then
echo
"yes"
fi
分支:
if
[ 條件判斷式 ]
then
程式elif
[ 條件判斷式 ]
then
程式fi
casecase $變數名 in
"值1"
) 程式1;;
"值2"
) 程式2;;
*) 如果前面都沒匹配到就執行;;
esac
forfor 變數 in 值1 值2 值3
do 程式
done
-----------------------------
for ((初始值;迴圈控制條件;變數變化))
do 程式
done
whilewhile
[ 判斷條件語句 ]
do 程式
done
讀取控制台的輸入
read(選項)(引數)
-p讀取值時的提示符-t指定讀取值時的等待時機,如果沒有在指定的時機內如數就不等待了
read -p "請輸入乙個數num=" num
read -t 10 -p "請輸入乙個數num=" num
函式[ function ] funname[()]
function getsum()
read -p "請輸入第乙個數" n1
read -p "請輸入第二個數" n2
getsum $n1 $n2
Linux系統shell程式設計for條件迴圈語句
for迴圈語句允許指令碼一次性讀取多個資訊,然後逐一對資訊進行操作處理,有點類似於python裡面for迴圈遍歷的概念,當要處理的資料有範圍時用for語句再合適不過了。語法結構為 for 變數名 in 取值列表 do 命令序列 done 先建立乙個檔案,裡面寫入ip位址 第二行 便利檔案hujian...
linux系統shell程式設計case條件測試語句
case語句是在多個範圍匹配的資料,若匹配成功呢則執行相關命令並結束整條命令,若資料不在所列出的範圍內則會執行 號中所定義的預設命令。下面我們來看一下它的語法結構。case 變數值 in 模式1 命令序列1 模式2 命令序列1 預設命令序列 esac 下面呢,我們還是老樣子,寫乙個例項來演示一下ca...
Shell程式設計 Linux系統環境程式設計之路
函式 別的高階語言都有函式的感念,當然shell程式設計也有這個概念,當寫乙個比較大型的shell程式的時候,如果沒有函式,則會到處都是重複的 當然也可以呼叫別的指令碼,但是速度會比較慢。所以函式是必不可少並且非常重要的乙個東西。定義函式的格式 function name 例子 fun s show...