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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Shell-03

發(fā)布時間:2025/5/22 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Shell-03 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Shell-03 編程原理

  • 編程介紹
  • 最開始的編程 機械碼(16進制)—CPU會識別

    計算機只能識別二進制指令 程序 = 指令 + 數據

    驅動:

    硬件默認是不能使用的 驅動程序----不同的廠家硬件設備之間需要進行指令溝通,需要驅動程序來進行“翻譯”;更趨近于硬件的開發(fā)工程師,要學習“匯編語言”;而“匯編語言”被廠家所限制;

    底層語言:C語言和C++ 匯編語言

    操作系統(tǒng):分配硬件資源來進行進程管理

    現在的編程是基于高級語言,以及超高級語言,更好的是讓程序員能夠實現編程功能

    CPU控制硬件

    編程語言的分類:

    ??? 高級語言、以及超高級語言需要翻譯成計算機可讀的語言(二進制指令)

    ??? 解釋型:shell語言 python ?perl(logo是駱駝)

    ???????????? 逐行翻譯,逐行執(zhí)行---解釋一行執(zhí)行一行

    ???????????? Bash –x 逐行執(zhí)行并顯示(默認也是逐行執(zhí)行)

    ???????????? Bash –x filename.sh

    編譯型:C語言 C++ C#

    ???????? 一次編譯,全部執(zhí)行

    Java即是編譯型也是解釋型

    根據服務重心的不同分為面向過程編程和面向對象編程

    面向過程? 側重于指令

    面向對象? 側重于數據的編程語言 對象是數據

    ???????? 編程語言的執(zhí)行方式:

    ????????????????? 【一行一行執(zhí)行】

    (1)????? 順序執(zhí)行 依次執(zhí)行,依次翻譯

    (2)????? 循環(huán)執(zhí)行 for(遍歷) while(循環(huán)條件) unitl(和while相反,false進入循環(huán))

    (3)????? 選擇執(zhí)行—分支結構 if ?case

    函數遞歸-----算階乘

  • shell腳本語言編程
  • (1)????? 邏輯關系

    添加用戶test到test10

    for I in $seq(1,10);do

    ??? user=test$i

    ??? pwd=`123456`

    ??? p=cat /etc/passwd | grep “$user” &> /dev/null

    ??? if [$? –eq 0 ];then

    ???????????? echo “存在”

    ??? else

    ???????????? useradd $user6

    ???????????? echo “123456” | passwd –stdin “$user” &> /dev/null

    ??? fi

    done

    ?

    ?

    如上一種判斷條件是有問題的,修改如下圖所示:

    ?

    ?

    但是,在接收參數時,$i只代表了100,所以用$*代替,如下圖所示:

    ?

    ?

    羅塞塔石碑-----------一種美國多媒體語言教學軟件

    3.Shell語句介紹

    (1)Shell語句是面向過程的,側重于指令集;

    優(yōu)點:調用os(操作系統(tǒng))的命令行,來實現所有功能,執(zhí)行效率高

    缺點:沒有庫調用(區(qū)分python,python可以調用各種模塊接口)

    (2)Shell語句的基本結構組成:

    ???????????? 命令----基礎

    每天備份一次/etc目錄下的所有文件 ?腳本

    date=`date +%F`

    if [ -f /tmp/${date}etc.bak ];then

    tar czf /tmp/${date}etc.bak /etc/

    fi

    ???????????? 數據----變量----(全局變量、局部變量、本地變量、傳參)

    /etc/profile----環(huán)境變量/全局變量

    export

    ???????????? 邏輯關系

    ???????????????????? Shell腳本的第一句話!!!!!!!!!!(必須寫)

    ???????????????????? #!/bin/bash-------定義腳本解釋器

    ??????????????????????????????????????????? #!-----shebang符號

    ??????????????????????????????????????????? /init----讀取運行級別

    ??????????????????????????????????????????? 藍色鏈接文件(鏈接到執(zhí)行文件上) ?綠色執(zhí)行文件

    ??????????????????????????????????????????? Chkconfig----控制開機啟動 ?

    ????????????????? /etc/shells------查看當前系統(tǒng)支持的shell程序

    ????????????????? /sbin/nologin----虛擬用戶用來跑服務 ?

    1-499是虛擬用戶 0 root 500以后是普通用戶

    ????????????????? echo $SHELL –--查看當前會話的shell程序

    /etc/passwd ----制定了用戶默認支持的shell程序(/sbin/nologin)

    Shell的執(zhí)行:

    ???????? (1)Bash命令來執(zhí)行腳本

    ????????????????? -n----查看shell腳本的邏輯錯誤(注意:單詞寫錯是不管的)

    ????????????????? -x----逐行顯示執(zhí)行的腳本程序(方便排除錯誤)

    ???????? (2)授權 chmod u+x filename.sh

    ????????????????? 使用全路徑執(zhí)行腳本即可

    4.變量

    ???????? $HOME 環(huán)境變量

    ????????????????? ?? 局部變量 declare—定義變量類型 變量是命名的內存空間,用來存儲數據

    ????????????????? ?? 本地變量 local在函數中使用,只在函數之中有效

    變量類型:

    數值型:

    整型:int在shell腳本中盡量不要進行較大的整型運算,否則會出現數值溢出

    ????????????????? 浮點型 float

    ????????????????? 布爾值 1/0(真/假)true/false

    ???????? ? 字符串:

    普通字符及字符串

    數組

    ????????? 基于字符串的類型的編程語言的分類:

    ????????????????????????? 強類型語言---數值必須被定義才可以可以進行處理或運算

    ????????????????????????? 弱類型語言---例如python,編程語言可以自動識別變量類型

    ????????????????? 【*多態(tài)*】一個數據具有多種屬性,最后使用的屬性取決于最后和它運算的數據

    傳參

    ?????? $? ---- 上一條命令的執(zhí)行狀態(tài) 0正確 1-255錯誤

    ?????? $1 $2 … ${10} ------ 命令后面?zhèn)魅肽_本的數據,以空格為分隔符

    ?????? $# -------- 統(tǒng)計傳參數量 ${$#} ---- 取該條命令的最后一個傳遞的參數

    ?????? $* -------- 表示所有傳參,所有的傳參以字符串的形式輸出

    ?????? $@ ------- 表示所有的傳參,所有的傳參以列表的形式輸出

    ?????? 【工作中要對所有的傳參進行操作的時候,就要考慮$*和$@】

    ???????? 定義變量格式:??? 一個等號叫賦值,兩個等號相當于-eq??????

    ????????????????? NAME=VALUE ? shell腳本中不要敲空格

    ????????????????? declare---定義變量類型 -i----定義變量為整數

    ???????????????????????????????????????????????????????????? ?-a-----數組

    ????????????????? ??????????????????????????????????????????? -l---大寫轉換小寫

    ???????????????????????????????????????????????????????????? -r---只讀

    ???????? 變量命名:

  • 下劃線的方式指定變量名稱
  • 駝峰命名方式
  • ???????? ?????????????????????????

    5.test文件測試、條件判斷

    ???????? 在腳本中,我們需要進行語句的分支;說白了就要進行判斷,判斷基于要使用test

    ???????? test使用格式:

  • test [option] file
  • [ 條件語句 ]----前后有空格
  • 常見的test選項:

  • 比較選項
  • -eq 等于

    -ne 不等于

    -gt 大于

    -ge 大于等于

    -lt ?小于

    -le? 小于等于

    ????????????????? 2.判斷選項

    ????????????????????????? ?-f? 判斷是否為普通文件

    ????????????????????????? ?-d? 判斷是否為目錄文件

    ???????????? -L? 判斷是否為鏈接文件

    ???????????? -r -w -x --- 判斷文件是否具有讀寫執(zhí)行權限

    ?

    ?

    ????????????????? 3.關聯選向

    ????????????????????????? -o 或

    ????????????????????????? -a 與

    ????????????????????????? !? 非

    4.字符串判斷

    ?

    = 判斷兩邊的字符串是否相等 -eq是判斷數值是否相等

    != 不等于

    -z 判斷字符串長度是否為0,長度為0是假;換種說法,判斷字符串是否存在

    -n 和-z相反 存在為假 不存在為真

    5.邏輯運算

    ???????? 與 && 兩邊的命令都為真結果為真

    ???????? 或 ||? 兩邊的命令一邊為真就是真 同時為假就是假

    ???????? 非 !=

    ???????? 這個邏輯運算符,前后對接的都是單獨存在的命令;

    ???????? [ $? -eq 0 ] && exit 0 || exit 1

    6.算術運算

    ???????? let 1+1 let i++

    ???????? expr 1*1

    ???????? $[$1 + 10]

    ???????? $(($1/$2))

    ???????? + - * / %

    **(冪)

    ?

    ?

    ?

    ?

    ?

    ?

    轉載于:https://www.cnblogs.com/KAJIA1/p/11348111.html

    總結

    以上是生活随笔為你收集整理的Shell-03的全部內容,希望文章能夠幫你解決所遇到的問題。

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