Linux開發_Shell腳本編程語言
任務1:shell腳本語言
linux下常用的腳本語言。
變量、數組、for、while、函數、運算符、if、……..
[root@wbyq /]# ls /bin/sh -l
lrwxrwxrwx. 1 root root 4 12月 27 2016 /bin/sh -> bash
? ?變量定義使用
#!/bin/bash
ABC=12345
echo "ABC=$ABC"
echo "ABC=${ABC}"
? ?shell腳本傳遞參數 類似于C語言的argv argc
#!/bin/bash
echo "cnt=$#"
echo "[0]=
echo "[0]=$0"
"echo "[1]="
echo "[2]="
echo "[3]="
? ?if語句語法規則
#!/bin/bash
a=10
b=20
if [ ${a} -eq ${b} ] #判斷兩個數是否相等,也可以使用 ==
then
echo "123"
else
echo "456"
fi
#!/bin/bash
if [ 100 == 120 -o 50 != 40 ] && [ 100 == 200 ]
then
echo "條件為真"
else
echo "條件為假"
fi
#一個[]表示一個完整的表達式
#-a表示與 -o表示或 只能用于單個表達式之內
#多個表達式之間可以使用&&和 || 嵌套連接
#!/bin/bash
#嵌套if語句示例
if [ 100 == 120 -o 50 != 40 ] && [ 100 == 200 ]
then
if [ 100 == 120 -o 50 != 40 ] && [ 100 == 200 ]
then
echo "條件為真"
else
echo "條件為假"
fi
else
if [ 100 == 120 -o 50 != 40 ] && [ 100 == 200 ]
then
echo "條件為真"
else
echo "條件為假"
fi
fi
? ?計算字符串長度
#!/bin/bash
string="abcd"
echo ${#string} #輸出 4
? ?數組語法
#!/bin/bash
buff=(1 2 3 4 5 6 7 8 9)
buff[0]=88
buff[1]=99
buff[100]=100
buff[88]=55
echo "buff[0]=${buff[0]}"
echo "buff[1]=${buff[1]}"
echo "buff[2]=${buff[2]}"
echo "buff[100]=${buff[100]}"
? ?echo用法示例
#!/bin/bash
DATA=12345
echo "DATA=${DATA}"
? ?printf語句格式
#!/bin/bash
printf "%d\n" 1234
printf "%s\n" "45678"
? ?從鍵盤上讀取數據
#!/bin/bash
echo -n "輸入數據:" #參數-n 的作用是不換行, echo 默認是換行
read data #從鍵盤輸入
echo "你輸入的數據為: $data" #顯示信息
? ?Case多分支選擇語句
#!/bin/bash
echo "輸入一個 1 到 4 之間的數字"
read aNum
case ${aNum} in
1) echo "你選擇 1"
;;
2) echo "你選擇 2"
;;
3) echo "你選擇 3"
;;
4) echo "你選擇 4"
;;
5) echo "你選擇 4"
;;
*) echo "你不選擇一個數字不在 1 到 4 之間"
;;
esac
? ?for循環
(1)基本用法
#!/bin/bash
for loop in 1 2 3 4 5 6 7 8 9
do
echo "loop=${loop}"
done
(2) 嵌套示例
#!/bin/bash
for loop in 1 2 3
do
for loop in 1 2 3
do
echo "loop=${loop}"
done
done
(3)輸出位置路徑
#!/bin/bash
for loop in /test/*.sh
do
echo "file_name=${loop}"
done
? ?break關鍵字
#!/bin/bash
for loop in 1 2 3
do
for loop in 1 2 3
do
echo "loop=${loop}"
break 2 #break后面可以加參數,選擇跳出的循環層次
done
done
? ?while循環示例
(1)示例1
#!/bin/bash
while : #無限循環條件
do
sleep 1 #休眠1秒鐘
echo "123"
break 1 #跳出指定層次的循環
done
(2)示例2
#!/bin/bash
COUNTER=0
while [ ${COUNTER} -lt 5 ]
do
COUNTER=`expr ${COUNTER} + 1`
echo "COUNTER=${COUNTER}"
done
COUNTER=0
while [ ${COUNTER} != 5 ]
do
COUNTER=`expr ${COUNTER} + 1`
echo "COUNTER=${COUNTER}"
done
(2)示例3
#!/bin/bash
while read DATA
do
echo "DATA=${DATA}"
done
(3)示例4
#!/bin/bash
while read DATA
do
echo "DATA=${DATA}"
continue #跳出當前這一次循環
echo "1234556"
done
? ?函數
(1) ?基本示例
#!/bin/bash
#函數的編寫格式
func()
{
echo "函數調用調用成功!"
}
func #調用函數不需要加()
(2) ?嵌套調用
#!/bin/bash
#函數的編寫格式
func1()
{
func2
}
func2()
{
echo "函數調用調用成功!"
}
func1 #調用函數不需要加()
(3) ?函數的返回值
#!/bin/bash
#函數的編寫格式
func()
{
return 255 #最大范圍是255
}
func #調用函數不需要加
echo $?
(4) ?函數的形參
#!/bin/bash
#函數的編寫格式
func()
{
echo "$1"
echo "$2"
echo "$3"
echo "$4"
return 255 #函數返回值只能是整數,最好不要返回路徑。
}
func 123 456 789 dfvbfdjvbgdf
echo $?
? ?調用外部腳本
#!/bin/bash
. 123.sh
source 123.sh
echo "a=${a}"
echo "b=${b}"
echo "c=${c}"
? ?Shell腳本練習
1. ?從鍵盤上輸入年份,判斷平年閏年。
#!/bin/bash echo -n "請輸入年份:" # -n 不換行 read year #從鍵盤上讀取年份 #能被400整除 ,能被4整除不能被100整除 if [ `expr $year % 400` == 0 ] || [ `expr $year % 4` == 0 -a `expr $year % 100` != 0 ] then echo "$year是閏年" else echo "$year是平年" fi
2. ?輸出9*9乘法口訣表。
3. ?冒泡排序。
4. ?使用函數封裝判斷平年閏年
5. ?輸出所有水仙花數(個位+十位+百位的立方和=本身)例如: 1*1*1+2*2*2+3*3*3=123
6. ?判斷100~200之間所有的素數
7. 寫一個腳本
(1). 切換工作目錄至指定目錄
(2). 依次向指定目錄中的每個文件或子目錄問好,形如:
(提示:for FILE in /var/*;或for FILE in `ls /var`;)
Hello,log
(3).統計/var目錄下共有多個文件,并顯示出來
8. 寫一個腳本, 通過ping命令測試192.168.x.0到192.168.x.254之間的所有主機是否在線
如果在線,就顯示“在線”
如果不在線,就顯示“離線”
注意:ping -c1 -w1 中-c1是指ping的次數,-w是指執行的最后期限,也就是執行的時間,單位為秒
9. 模擬linnux登錄shell
就是輸入用戶名密碼判斷是否正確。
10. 查找指定目錄下最大的文件,然后輸出
11. 將指定目錄下的所有指定后綴文件,按照統一的方式命名。
linux Shell 匯編語言
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。