shell脚本编译规范(编写第一个脚本,脚本变量的作用,类型 ,了解read命令,let命令,环境变量和预定义变量)
文章目錄
- shell腳本編譯規(guī)范
- shell腳本應用場景
- shell編程規(guī)范
- 編寫第一個腳本
- 執(zhí)行腳本文件四種方法
- echo輸出友好提示信息
- 管道與重定向
- 管道操作符號“|”
- shell腳本變量揭秘
- 變量的作用
- 變量的類型
- 自定義變量
- 賦值時使用引號與從鍵盤輸入內容為變量賦值
- 變量引用
- 變量運算使用系統(tǒng)的 $RANDOM 變量
- read命令
- 設置變量的作用范圍
- 整數變量的運算和常用運算符
- let 命令
- 特殊的shell變量
- 預定義變量
shell腳本編譯規(guī)范
shell腳本應用場景
hell腳本的概念
? 將要執(zhí)行的命令按順序保存到一個文件文本,給該文件可執(zhí)行權限,便可運行
? 可結合各種shell控制語句以完成更復雜的操作
shell腳本應用場景
? 重復性操作
? 批量事務處理
? 自動化運維
? 服務運行狀態(tài)監(jiān)控
? 定時任務執(zhí)行
shell編程規(guī)范
shell的作用:命令解釋器,“翻譯官”
shell一般在/bin/bash中
[root@localhost ~]# cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/tcsh /bin/cshtype命令可以查看命令是內部命令還是外部命令
例如:cd命令是內嵌命令,yum是外部命令
編寫第一個腳本
[root@localhost ~]# vim demo.sh #!/bin/bash cd /boot pwd ls -lh vm*執(zhí)行腳本文件四種方法
sh+腳本路徑
[root@localhost ~]# sh demo.sh /boot -rwxr-xr-x. 1 root root 6.4M 6月 10 22:51 vmlinuz-0-rescue-a76c4da5cffb411698a30fe0db2a03ee -rwxr-xr-x. 1 root root 6.4M 11月 9 2018 vmlinuz-3.10.0-957.el7.x86_64 [root@localhost ~]#source腳本文件路徑
[root@localhost ~]# source demo.sh /boot -rwxr-xr-x. 1 root root 6.4M 6月 10 22:51 vmlinuz-0-rescue-a76c4da5cffb411698a30fe0db2a03ee -rwxr-xr-x. 1 root root 6.4M 11月 9 2018 vmlinuz-3.10.0-957.el7.x86_64 [root@localhost boot]# 會自動切換到目標文件夾.空格腳本文件路徑
[root@localhost ~]# . demo.sh /boot -rwxr-xr-x. 1 root root 6.4M 6月 10 22:51 vmlinuz-0-rescue-a76c4da5cffb411698a30fe0db2a03ee -rwxr-xr-x. 1 root root 6.4M 11月 9 2018 vmlinuz-3.10.0-957.el7.x86_64 [root@localhost boot]# 會自動切換到目標文件夾腳本文件路徑(絕對路徑與相對路徑)
[root@localhost opt]# ./ demo.sh -bash: ./: 是一個目錄 [root@localhost opt]# chmod +x demo.sh [root@localhost opt]# ./demo.sh /boot -rwxr-xr-x. 1 root root 6.4M 6月 10 22:51 vmlinuz-0-rescue-a76c4da5cffb411698a30fe0db2a03ee -rwxr-xr-x. 1 root root 6.4M 11月 9 2018 vmlinuz-3.10.0-957.el7.x86_64 [root@localhost opt]#echo輸出友好提示信息
echo 友好的方式 [root@localhost opt]# vim demo.sh #!/bin/bash cd /boot echo "當前路徑 " pwd echo “以vm開頭的文件是 ” ls -lh vm* [root@localhost opt]# ./demo.sh 當前路徑 /boot “以vm開頭的文件是 ” -rwxr-xr-x. 1 root root 6.4M 6月 10 22:51 vmlinuz-0-rescue-a76c4da5cffb411698a30fe0db2a03ee -rwxr-xr-x. 1 root root 6.4M 11月 9 2018 vmlinuz-3.10.0-957.el7.x86_64 [root@localhost opt]#管道與重定向
- 標準輸入:從該設備接收用戶輸入的數據
- 標準輸出:通過該設備向用戶輸出數據
- 標準錯誤:通過該設備報告執(zhí)行出錯信息
| 標準輸入 | /dev/stdin | 0 | 鍵盤 |
| 標準輸出 | /dev/stdout | 1 | 顯示器 |
| 標準錯誤輸出 | /dev/stderr | 2 | 顯示器 |
管道操作符號“|”
grep:過濾關鍵字
awk:按列讀取數據
將左側的命令輸出結果,作為右側命令的處理對象
[root@localhost ~]# grep "bash$" /etc/passwd root:x:0:0:root:/root:/bin/bash tange:x:1000:1000:tange :/home/tange:/bin/bash zhang:x:1001:1001::/home/zhang:/bin/bash [root@localhost ~]# df -Th | awk '{print $7}' 磁盤的內存使用情況 可用 290G 1.9G 1.9G 1.9G 1.9G 0 836M 378M[root@localhost opt]# df -Th | awk '{print $1,$5,$6}' 文件系統(tǒng) 可用 已用% /dev/mapper/centos-root 290G 2% devtmpfs 1.9G 0% tmpfs 1.9G 0% tmpfs 1.9G 1% tmpfs 1.9G 0% /dev/sr0 0 100% /dev/sda1 836M 18% tmpfs 378M 1%[root@localhost opt]# grep "bash$" /etc/passwd | awk -F: '{print $1,$7 }' root /bin/bash tange /bin/bash zhang /bin/bash tam /bin/bash tom /bin/bashshell腳本變量揭秘
變量的作用
用來存放系統(tǒng)和用戶需要使用的特定參數(值) ===>放在內存
變量名:使用固定的名稱,由系統(tǒng)預設或用戶定義
變量值:能夠根據用戶設置,系統(tǒng)環(huán)境的變化而變化
變量的類型
自定義變量:由用戶自己定義,修改和使用
特殊變量:環(huán)境變量,只讀變量,位置變量,預定義變量
自定義變量
通過加前導符“ $” 可以應用一個變量
變量名=變量值 代表將右邊的值賦予左邊 查看變量的值:echo $變量名 [root@localhost opt]# addr=112233 [root@localhost opt]# echo $addr 112233 [root@localhost opt]# zhang=666 [root@localhost opt]# echo $zhang 666[root@localhost opt]# num=$addr [root@localhost opt]# addr=20 [root@localhost opt]# echo $addr 20[root@localhost opt]# product=xue [root@localhost opt]# version=5.6 [root@localhost opt]# echo $product $version xue 5.6 [root@localhost opt]# echo $product$version xue5.6[root@localhost opt]# echo $product 3.8 xue 3.8 [root@localhost opt]# echo ${product} 3.8 xue 3.8 [root@localhost opt]# echo ${product}3.8 xue3.8賦值時使用引號與從鍵盤輸入內容為變量賦值
變量引用
雙引號:允許通過$符號引用其他變量值
單引號:禁止引用其他變量值,$視為普通字符
反撇號:命令替換,提取命令執(zhí)行后的輸出結果
[root@localhost ~]# num2="test $num1" 雙引號:允許通過$符號引用其他變量值' [root@localhost ~]# echo $num2 test 10 [root@localhost ~]# num2='test $num1' 單引號禁止引用其他變量值,$視為普通字符' [root@localhost ~]# echo $num2 test $num1 [root@localhost ~]# num3=`ps aux | wc -l` 反撇號中識別命令,對命令結果進行解析 [root@localhost ~]# echo $num3 213 [root@localhost ~]# num4=$(ps aux | wc -l) [root@localhost ~]# echo $num4 213變量運算使用系統(tǒng)的 $RANDOM 變量
格式:$(($)) 取1~6之間隨機數 [root@xue ~]# echo $(($RANDOM % 10 + 1 )) 2 [root@xue ~]# echo $(($RANDOM % 10 + 1 )) 6 [root@xue ~]# echo $(($RANDOM % 10 + 1 )) 1 [root@xue ~]# echo $(($RANDOM % 10 + 1 )) 2 [root@xue ~]# echo $(($RANDOM % 10 + 1 )) 5 [root@xue ~]# echo $(($RANDOM % 10 + 1 )) 7 [root@xue ~]# echo $(($RANDOM % 10 + 1 )) 4 [root@xue ~]# echo $(($RANDOM % 10 + 1 )) 3 [root@xue ~]# echo $(($RANDOM % 10 + 1 ))read命令
從鍵盤輸入內容為變量賦值,read命令是提示用戶輸入信息
read [-p “提示信息”] 變量名[-t 提示輸入等待時間默認為秒]
[root@localhost ~]# read -p "請輸入一個整數; " sum 請輸入一個整數; 120 [root@localhost ~]# echo $sum 120設置變量的作用范圍
格式一:export 變量名... 格式二:export 變量名=變量值... [root@localhost opt]# num=`ps aux | wc -l` [root@localhost opt]# echo $num 210 [root@localhost opt]# bash 設置變量作用范圍' [root@localhost opt]# echo $num 顯示不出來 [root@localhost opt]# exit 退出變量范圍' exit [root@localhost opt]# export $num [root@localhost opt]# bash '變量范圍' [root@localhost opt]# echo $num 210 [root@localhost ~]# export num3=100 [root@localhost ~]# echo $num3 100整數變量的運算和常用運算符
常用運算符 expr 變量1 運算符 變量2
加法運算:+ 減法運算:- 乘法運算:\* 除法運算:/ 求模(取余)運算:% [root@localhost opt]# expr 356 + 169 加法運算' 525 [root@localhost opt]# expr 356 - 169 減法運算 187 [root@localhost opt]# expr 356 \* 169 乘法運算 60164 [root@localhost opt]# expr 356 / 169 除法運算' 2 [root@localhost ~]# expr 356 % 169 取余運算' 18 [root@localhost opt]# sum=`expr 4 + 4` 這是反撇號 求和變量運算' [root@localhost opt]# echo $sum 8 或 [root@192 ~]# a=10 b=10 [root@192 ~]# echo $((a+b )) 20 [root@192 ~]# echo $((10+10 )) 20let 命令
let 命令是 BASH 中用于計算的工具,用于執(zhí)行一個或多個表達式,變量計算中不需要加上 $ 來表示變量。如果表達式中包含了空格或其他特殊字符,則必須引起來。
自加操作:let i++
自減操作:let i–
[root@192 ~]# i=2 [root@192 ~]# let i+=2 [root@192 ~]# echo $i 4 [root@192 ~]# i=5 [root@192 ~]# let i-- [root@192 ~]# echo $i 5 [root@192 ~]# let i-- [root@192 ~]# echo $i 4 [root@192 ~]# let i-- [root@192 ~]# echo $i 3 [root@192 ~]# let i++ [root@192 ~]# echo $i 4 [root@192 ~]# let i++ [root@192 ~]# echo $i 5特殊的shell變量
[root@localhost opt]# vim demo.sh #!/bin/bash #This is my first shell-script sum=0 sum=`expr $1 + $2` echo "總和為:$sum" [root@localhost opt]# ./demo.sh 20 30 總和為:50預定義變量
| $? | 最后一次執(zhí)行的命令的返回狀態(tài)。如果這個變量的值為 0,則證明上一條命令正確執(zhí)行;如果這 個變量的值為非 0 (具體是哪個數由命令自己來決定),則證明上一條命令執(zhí)行錯誤 |
| $$ | 當前進程的進程號(PID) |
| $! | 后臺運行的最后一個進程的進程號(PID) |
| $* | 所有位置變量的內容 |
| $# | 命令行中位置變量的個數 |
| $0 | 當前執(zhí)行的進程/程序名 |
| $# | 命令行中位置變量的個數 |
| $0 | 當前執(zhí)行的進程/程序名 |
總結
以上是生活随笔為你收集整理的shell脚本编译规范(编写第一个脚本,脚本变量的作用,类型 ,了解read命令,let命令,环境变量和预定义变量)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存和硬盘:性价比大揭秘,你选谁?
- 下一篇: shell编程之条件语句(文件测试,te