日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shell脚本编译规范(编写第一个脚本,脚本变量的作用,类型 ,了解read命令,let命令,环境变量和预定义变量)

發(fā)布時間:2024/2/28 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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/csh

type命令可以查看命令是內部命令還是外部命令
例如: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/stdin0鍵盤
標準輸出/dev/stdout1顯示器
標準錯誤輸出/dev/stderr2顯示器
類型 操作符 用途 重定向輸入 < 從指定的文件讀取數據,而不是從鍵盤輸入 重定向輸出 > 將輸出結果保存到指定的文件(覆蓋原有內容) 重定向輸出 >> 將輸出結果追加到指定的文件 標準錯誤輸出 2> 將錯誤信息保存到指定的文件(覆蓋原有內容) 標準錯誤輸出 2>> 將錯誤信息追加到指定的文件中 混合輸出 &> 將標準輸出,標準錯誤的內容保存到同一個文件中 [root@localhost ~]# . 1.txt.sh bash: Iecho: 未找到命令... 相似命令是: 'echo' [root@localhost ~]# 1.txt.sh 2>error.txt 把錯誤信息導入到error中 [root@localhost ~]# cat error.txt bash: 1.txt.sh: 未找到命令...

管道操作符號“|”

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/bash

shell腳本變量揭秘

變量的作用

用來存放系統(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 )) 20

let 命令

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í)行的進程/程序名
[root@localhost opt]# vim demo.sh #!/bin/bash sum=0 sum=`expr $1 + $2` expr命令可以實現數值運算、數值或字符串比較、字符串匹配、字符串提取、字符串長度計算等功能 echo "總和為:$sum" echo "執(zhí)行的腳本是$0"#!/bin/bash num=0 num=`expr $1 + $2` echo "總和為" $num echo "是否執(zhí)行成功 "$? echo "執(zhí)行腳本是 "$0 echo "詳細內容 "$* |

| $# | 命令行中位置變量的個數 |
| $0 | 當前執(zhí)行的進程/程序名 |

[root@localhost opt]# vim demo.sh #!/bin/bash sum=0 sum=`expr $1 + $2` expr命令可以實現數值運算、數值或字符串比較、字符串匹配、字符串提取、字符串長度計算等功能 echo "總和為:$sum" echo "執(zhí)行的腳本是$0"#!/bin/bash num=0 num=`expr $1 + $2` echo "總和為" $num echo "是否執(zhí)行成功 "$? echo "執(zhí)行腳本是 "$0 echo "詳細內容 "$*

總結

以上是生活随笔為你收集整理的shell脚本编译规范(编写第一个脚本,脚本变量的作用,类型 ,了解read命令,let命令,环境变量和预定义变量)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。