shell
1.概述
shell是乙個命令列直譯器,它接收應用程式/使用者命令,然後呼叫作業系統核心
還是乙個功能相當強大的程式語言,易編寫.易除錯.靈活性強
2.shell解析器
檢視linux提供的shell解析: cat /etc/shells
sh和 bash是常用的 bash包含了其他的功能,進行了重新編寫
檢視預設解析器:echo $shell (centos預設的解析器是bash)
3.shell 指令碼入門
3.1指令碼格式
指令碼為 #!/bin/bash 開頭 (指定的解析器)
建立指令碼 touch 指令碼名.sh
例如:建立指令碼並在指令碼中輸入helloworld
touch helloworld.sh
vi helloworld .sh
#!/bin/bash
echo 「helloworld」
3.2指令碼的常用執行方式
1.sh+指令碼的相對路徑
例:sh helloworld.sh
2.sh+指令碼絕對路徑
例:sh /home/bxg/helloworld.sh
3.bash+指令碼的相對路徑
例:bash helloworld.sh
4.bash+指令碼的絕對路徑
例:bash /home/bxg/helloworld.sh
3.3 高階版 採用輸入指令碼的絕對路徑或相對路徑執行指令碼(前提是必須具有可執行許可權+x,推薦採用這種方式)
第一步 :賦予helloworld.sh 指令碼 的+x許可權
例:chmod +x helloworld.sh
第二步:執行
例:./helloworld.sh
注意:第一種方法本質是bash解析器幫你執行指令碼,所以指令碼本身並不需要執行許可權。
第二種執行方式本質是指令碼需要自己執行,所以需要執行許可權。
3.4 多命令處理
需求:在home/bxg/目錄下建立乙個a.txt ,在a.txt檔案中增加nihao
例:touch batch.sh 建立指令碼
vi batch.sh 編輯指令碼
#!/bin/bash 規定開頭
cd/home/bxg
touch a.txt
echo 「nihao」 >>a.txt
3.5 檢視指令碼的執行流程(一般用來檢視指令碼執行的步驟,錯誤)
bash -x batch.sh
3.6 檢視指令碼的語法(一般使用這個命令檢視指令碼語法錯誤)
bash -n batch.sh
4 shell中的變數
4.1系統變數
常用的有$home $pwd $shell $user 等
例:1檢視系統變數的值 echo $home
2 顯示當前shell中所有變數 set
4.2 自定義變數
4.2.1.語法
定義變數:變數=值 中間不能有空格
撤銷變數:unset 變數
宣告靜態變數:readonly 變數 這個變數只能讀,不能修改或者撤銷
4.2.2規則
變數名稱可以由字母/數字和下劃線組成,但是不能以數字開頭,環境變數名建議大寫
等號兩側不能有空格
在bash中,變數預設型別都是字串型別,無法直接進行數值運算。
變數的值如果有空格,需要用雙引號或單引號括起來。
例:定義變數a a=5
檢視變數 $a
重新賦值 a=3
撤銷變數a unset a
宣告靜態變數b readonly b=2
變數無法進行數值計算
變數的值如果有空格,需要使用雙引號或單引號括起來
4.2.3把變數提公升為全域性環境變數 可供其他shell程式使用
export + 變數名
4.3 特殊變數
4.3.1 $n
n 功能
:n為數
字,
n 功能:n為數字,
n功能:n為
數字,n代表該指令碼名稱,$1-$9代表第一到第九個引數, 十以上的引數需要用大括號包含
例:4.3.2$#
$# 功能:獲取所有輸入引數個數,常用於迴圈
4.3.3$* $@
∗ 功能
:代表命
令行中所
有的引數
,* 功能:代表命令列中所有的引數,
∗功能:代表
命令列中
所有的參
數,*把所有的引數看成乙個整體
@ 功能
:功能一
樣,但是
@ 功能:功能一樣,但是
@功能:功能
一樣,但
是@是把每個引數區分對待
shell指令碼一
shell 手工部署專案 自動化部署專案 1 shell簡介 什麼是shell shell是乙個命令直譯器,是乙個程式 bin bash,解釋linux的命令 shell互動式命令使用 開啟終端,一行行敲命令 shell指令碼 一系列的命令組成的檔案,結合shell語法 shell指令碼注釋 1 單...
Shell指令碼 一
1.特殊變數 1 2 表示指令碼後接的引數值 引數的數量 所有引數 0 指令碼名 程序號 退出碼2.條件判斷 2.1.if elif else語句 bin bash if condition1 condition2 then text1 elif condition3 then text2 else...
shell指令碼(一)
1 列印九九乘法表 root centos7 scripts vim 99chengfb.sh bin bash for i in do for j in seq 1 i do for j in eval echo do for j in eval echo do result j i echo e...