cshell腳本
⑴ shell腳本書寫方法
在shell學習過程中,感覺挺有用的一份比較,略整理分享給大家。
首先,shell的作用
用戶的登陸shell 登陸後默認的shell程序是: /bin/bash
不同的shell內部指令,運行環境會有所區別
常見的shell有
/bin/sh
/bin/bash
/sbin/nologin
1.編寫腳本代碼:
使用vi編輯器,每行一條linux命令,按照順序執行
2.然後賦予腳本文件可執行的屬性
3.執行腳本文件的三種方法
./chao.sh
sh /chao.sh
source /chao.sh
更完善的腳本構成
注釋信息
可執行語句
重定向操作
類型 操作符 用途
重定向輸入 < 從指定文件讀取而不是從鍵盤輸入
重定向輸出 > 將輸出文件保存到指定文件(覆蓋原有內容)
>> 將輸出文件保存到指定文件(覆蓋原有內容)
標准錯誤輸出 2> 將錯誤信息保存到指定的文件(覆蓋原有內容)
2>> 將錯誤信息保存到指定的文件
混合輸出 &> 將標准輸出,標准錯誤的內容保存到同一文件中
管道操作符號「|」
將左側的命令輸出結果,作為右側命令的處理對象
shell變數的作用
為靈活管理Linux系統提供的特定參數,有兩層意思
變數名:使用固定的名稱,由系統預設或用戶定義
變數值: 能夠根據用戶設置,系統環境的變化而變化
變數的類型
自定義變數:由用戶自己定義,修改和使用
環境變數: 由系統維護,用於設置工作環境
位置變數: 通過命令行給腳本程序傳遞參數
預定義變數:BASH中內置的一類變數,不能直接修改
定義一個新的變數
格式: 變數名=變數值
變數名以字母或下劃線開頭,區分大小寫,建議全大寫
查看變數的值: echo $變數名
賦值時使用引號:
雙引號:允許使用$符引用其他變數值
單引號: 禁止引用其他變數值,$視為普通字元
反撇號:命令替換,提取命令執行後的輸出結果
將鍵盤輸入內容為變數賦值
格式: read [-p "提示信息"] 變數名
設置變數的作用范圍
export 變數名
export 變數名=變數值
兩種格式可以混合使用
整數變數的運算:
expr 變數1 運算符 變數2 [運算符 變數3]
常見的運算符
加法運算符 +
減法運算符: -
乘法運算符:\*
除法運算符: /
取余運算:%
整數變數的運算(2)
((變數=變數運算符變數));
等號後面的變數可以是具體數值
例子:
((a=a+3));
環境變數:
由系統提前創建,用來設置用戶的工作環境
配置文件: /etc/profile ~/.bash_profile
常見環境變數的舉例
位置變數:
表示為$n, n為1~9之間的數字
預定義變數:
/etc/passwd /etc/shadow
例如一些服務的內置用戶名或密碼
如apache的啟動用戶就是預定義變數
條件測試操作
測試特定的 表達式是否成立,當條件成立時,測試語句的返回值為0,否則為其他數值
格式 : test 條件表達式
應用實例:
test -z 進行測試的時候 字元串長度為0的時候 結果才返回1
如果變數數值為0 返回0
條件測試操作
[ 操作符 文件或目錄]
[5] 部分是判斷表達式,-d表示判斷是否是目錄
&&是」邏輯與「操作符,只有&&前面的判斷成立,後面的語句才會執行
-b的意思是判斷 後面的路徑是否是一個目錄
echo $? 表示對剛剛執行的表達式進行判斷
0表示成立,1表示不成立
-e filename 如果 filename存在,則為真 [ -e /var/log/syslog ]
-d filename 如果 filename為目錄,則為真 [ -d /tmp/mydir ]
-f filename 如果 filename為常規文件,則為真 [ -f /usr/bin/grep ]
-L filename 如果 filename為符號鏈接,則為真 [ -L /usr/bin/grep ]
-r filename 如果 filename可讀,則為真 [ -r /var/log/syslog ]
-w filename 如果 filename可寫,則為真 [ -w /var/mytmp.txt ]
-x filename 如果 filename可執行,則為真 [ -L /usr/bin/grep ]
filename1-nt filename2 如果 filename1比 filename2新,則為真 [ /tmp/install/etc/services -nt /etc/services ]
filename1-ot filename2 如果 filename1比 filename2舊,則為真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]
字元串比較運算符 (請注意引號的使用,這是防止空格擾亂代碼的好方法)
-z string 如果 string長度為零,則為真 [ -z "$myvar" ]
-n string 如果 string長度非零,則為真 [ -n "$myvar" ]
string1= string2 如果 string1與 string2相同,則為真 [ "$myvar" = "one two three" ]
string1!= string2 如果 string1與 string2不同,則為真 [ "$myvar" != "one two three" ]
算術比較運算符
num1-eq num2 等於 [ 3 -eq $mynum ]
num1-ne num2 不等於 [ 3 -ne $mynum ]
num1-lt num2 小於 [ 3 -lt $mynum ]
num1-le num2 小於或等於 [ 3 -le $mynum ]
num1-gt num2 大於 [ 3 -gt $mynum ]
num1-ge num2 大於或等於 [ 3 -ge $mynum ]
整數值比較
格式: [ 整數1 操作符 整數2 ]
字元串比較
格式1: [ 字元串1 = 字元串2 ]
[ 字元串1 != 字元串2 ]
格式2: [ -z 字元串 ]
邏輯測試:
格式1: [ 表達式1 ] 操作符 [ 表達式2 ]
格式2: 命令1 操作符 命令2
if語句的結構
while語句的語法結構
⑵ 如何運行shell腳本
編寫好的shell腳本(如:test),可以採取兩種方式進行運行: 一、 $ sh test 一般不採用這種調用方式,尤其不採用「sh<test」的調用方式,因為這種方式將禁止shell讀取標准輸入。 也可以採用 $ ksh test 這種方式要求shell具有「可讀」的訪問許可權。 二、直接運行可執行的shell腳本之前,首先應使用下列chmod命令,把shell腳本文件設置為可執行的文件。 chmod 755 test(除文件屬主可寫之外,每個用戶均具有讀和可執行的訪問許可權) chmod +rx test(同上) chmod u+rx test(只有文件屬主具有讀和執行的訪問許可權) 按照上述要求設置shell腳本文件的訪問許可權後,可採用下列方式,直接運行shell腳本了。 1、test(如果命令檢索路徑包含當前目錄) 2、./test(如果命令減縮路徑不包含當前目錄) *說明: sh test 方式調用一個shell叫蹦可能會禁止某些shell特定的擴展功能,因而可能引起腳本無法正確執行。
⑶ 第七章 SHELL腳本
在linux里可以直接使用shell腳本進行管理,shell就是命令解釋器,把用戶的命令翻譯成機器語言,在把機器語言翻譯成人類語言返回給用戶。
shell有Bshell和Cshell區分,經常在linux裡面用的shell都是Bshell,Bshell和Cshell完全不兼容。我在Centos裡面看見支持的幾種shell解釋器有sh,bash,csh。然後用的最多的就是base(標准shell)。
shell腳本可以添加執行許可權,然後在base命令界面直接輸入腳本路徑即可執行;所有的腳本開頭要聲明腳本shell,常見的聲明是#!/bin/bash,其他的還有#!/bin/sh,#!/bin/csh
寫第一個shell腳本吧
可以使用alias命令查看系統當前的別名,也可以用alias 別名=『真實命令』 來執行;
重定向輸出是將輸出到標准輸出設備的數據重新定向到另一個地方;
將標准(鍵盤)輸入重定向到其他一個設備上;
格式:命令1 | 命令2
表示把命令1的執行結果當成命令2的執行條件
跟正則表達式不一樣啊,剛才的grep -P就是使用正則,但是這里通配符比較簡單啊。
用引號表示,其中單引號標識不解析字元串中的特殊字元,雙引號則解析特殊字元。
如果字元串中有存在$(ls)這種,那麼這個表示ls命令的執行結果啊
當然這也可以用\進行轉義
⑷ shell腳本
牙叔教程 簡單易懂
用autojs執行shell腳本, 腳本所在目錄為 /data/local/tmp
做息屏運行腳本, 要用到類似的方法,
比如息屏使用adb去調用dex文件, 來達到息屏效果,
兩者相同的地方是
手機: Mi 8
Android版本: 10
Autojs版本: 9.0.10
非常不幸, 沒有許可權, 復制文件失敗,
所以我們需要要提高許可權, Shizuku 可以提升我們的許可權到adb級別,
Shizuku的使用請查閱上一篇教程, 激活Shizuku
將許可權提升為adb級別之後, 我們重新復制文件
首先, 檢查有沒有adb許可權
復制文件
查看文件yashu.sh許可權
可以看到許可權是-rw-rw----, 沒有執行許可權, 接下來, 我們就添加執行許可權
code=0, 0表示沒有發生錯誤, 沒有錯誤就意味著, 命令正常執行,
再次查看文件yashu.sh許可權
可以看到許可權是-rwxrwx--x, 有了執行許可權, 接下來, 我們就執行這個shell腳本
shell腳本內容
執行shell腳本的命令
息屏運行腳本使用到的命令與執行shell腳本類似, 這也是我寫這篇教程的原因,
方便以後復制黏貼
思路是最重要的, 其他的網路, bing, stackoverflow, github, 安卓文檔, autojs文檔, 最後才是群里問問
--- 牙叔教程
部分內容來自網路
本教程僅用於學習, 禁止用於其他用途
⑸ shell腳本主要有哪些
第一個shell腳本程序:
#!/bin/bash
# 上面中的 #! 是一種約定標記, 它可以告訴系統這個腳本需要什麼樣的解釋器來執行;echo "Hello, world!"
變數:
定義變數:
country="China"Number=100
注意: 1,變數名和等號之間不能有空格;
2,首個字元必須為字母(a-z,A-Z)。
3, 中間不能有空格,可以使用下劃線(_)。
4, 不能使用標點符號。
5, 不能使用bash里的關鍵字(可用help命令查看保留關鍵字)。
使用變數:
只需要在一個定義過的變數前面加上美元符號$就可以了, 另外,對於變數的{} 是可以選擇的, 它的目的為幫助解釋器識別變數的邊界.
country="China"echo $countryecho ${country}echo "I love my ${country}abcd!"
#這個需要有{}的;
重定義變數:直接把變數重新像開始定義的那樣子賦值就可以了:
country="China"country="ribenguizi"
只讀變數: 用 readonly 命令 可以把變數字義為只讀變數。
readonly country="China"#或
country="China"readonly country
刪除變數: 使用unset命令可以刪除變數,但是不能刪除只讀的變數。用法:
unset variable_name
變數類型
運行shell時,會同時存在三種變數:
1) 局部變數
局部變數在腳本或命令中定義,僅在當前shell實例中有效,其他shell啟動的程序不能訪問局部變數。
2) 環境變數
所有的程序,包括shell啟動的程序,都能訪問環境變數,有些程序需要環境變數來保證其正常運行。必要的時候shell腳本也可以定義環境變數。
3) shell變數
shell變數是由shell程序設置的特殊變數。shell變數中有一部分是環境變數,有一部分是局部變數,這些變數保證了shell的正常運行
特殊變數:
其中, 1. 取值後面必須為關鍵字 in,每一模式必須以右括弧結束。取值可以為變數或常數。匹配發現取值符合某一模式後,其間所有命令開始執行直至 ;;。;; 與其他語言中的 break 類似,意思是跳到整個 case 語句的最後。2. 如果無一匹配模式,使用星號 * 捕獲該值,再執行後面的命令。
⑹ shell腳本是什麼
當執行命令或程序語句是通過程序文件而不是命令行,那這個程序被稱為Shell腳本。如果Shell腳本內置很多命令、語句及循環控制,然後一次性執行完畢,這種通過文件執行腳本的方式稱為非交互方式。用戶可以在Shell腳本中輸入一系列命令及命令語句組合。這些命令、變數和流程式控制制語句等有機地結合在一起,就形成一個功能強大的Shell腳本。
⑺ Shell腳本的簡單介紹
Shell應該是命令解釋器,將Shell腳本解析成操作系統能理解的操作去執行。
Shell腳本就是一系列的命令合集。
Unix/Linux上常見的Shell腳本解釋器有bash、sh、ash、csh、ksh等,習慣上把它們稱作一種Shell。我們常說有多少種Shell,其實說的是有多少種Shell腳本解釋器。
在不同的操作系統中,支持的Shell腳本是不一樣的,不同的Shell腳本的命令和語法方式也有所區別的。
在Linux下面可以執行下面命令,來查看支持的shell的種類
在網上查了下資料,大體上有這么幾種shell吧
所以如果想要學習shell腳本,應該學bash。而且在Windows上面可以通過Cygwin或者Mingw來支持bash。
⑻ shell腳本是什麼
shell是計算機的殼
通俗一點的解釋是:
如果你要對計算機發布指令,讓計算機去按照你的意願做事,那麼你就需要告訴計算機去做什麼事,怎麼樣去做。一般來說你可以用像windows這樣的圖形操作系統來完成,你只需點點滑鼠,敲敲鍵盤就能夠搞定了。但是在圖形下面的就是shell了,windows裡面的dos語言就是一種shell。這些語言通過一定的規則和語法來對計算機進行操作,相對圖形來說比較底層。
還有很多shell,比如Linux和Unix系統中的bash、ksh、csh等等。
而shell腳本的意思就是將這些shell的命令語句集合在一個文件中,進行一些較復雜的處理。
⑼ Shell腳本
因為-c的意思是command,所以bash -c後面應該跟一個command。
shell運行腳本的兩種方法:
1、bash xx.sh
2、bash -c "cmd string"
使用bash -c需要注意兩點:
1、bash -c "cmd string"接的是shell命令字元串,用雙引號括起來
2、bash -c "/path/to/file"接的是文件絕對路徑,用雙引號括起來,並且文件需要可執行許可權
參考鏈接:
1.1、 linux shell -c,【bash】關於shell中 bash -c 執行命令或者可執行文件
1.2、 【bash】關於shell中 bash -c 執行命令或者可執行文件
示例:/usr/libexec/PlistBuddy -c "cmd string"
參考鏈接: XCode添加自定義Run Script Phase
由於PlistBuddy並不在Mac默認的Path里,所以我們得通過絕對路徑來引用這個工具:
參考鏈接: PlistBuddy簡單使用
⑽ 什麼是shell腳本
操作系統與外部最主要的介面就叫做shell。shell是操作系統最外面的一層。shell管理你與操作系統之間的交互:等待你輸入,向操作系統解
釋你的輸入,並且處理各種各樣的操作系統的輸出結果。shell提供了你與操作系統之間通訊的方式。這種通訊可以以交互方式(從鍵盤輸
入,並且可以立即得到響應),或者以shellscript(非交互)方式執行。shellscript是放在文件中的一串shell和操作系統命令,它們可以被
重復使用。本質上,shellscript是命令行命令簡單的組合到一個文件裡面。Shell基本上是一個命令解釋器,類似於DOS下的command.com
。它接收用戶命令(如ls等),然後調用相應的應用程序。較為通用的shell有標準的Bourneshell(sh)和Cshell(csh)。
互動式shell和非互動式shell互動式模式就是shell等待你的輸入,並且執行你提交的命令。這種模式被稱作互動式是因為shell與用戶進行交
互。這種模式也是大多數用戶非常熟悉的:登錄、執行一些命令、簽退。當你簽退後,shell也終止了。shell也可以運行在另外一種模式:非
互動式模式。在這種模式下,shell不與你進行交互,而是讀取存放在文件中的命令,並且執行它們。當它讀到文件的結尾,shell也就終止了。
shell的類型在UNIX中主要有兩大類shellBourneshell(包括sh,ksh,andbash)Bourneshell(sh)Kornshell(ksh)BourneAgain
shell(bash)POSIXshell(sh)Cshell(包括cshandtcsh)Cshell(csh)TENEX/TOPSCshell(tcsh).
附:LINUX系統的shell原理
Linux系統的shell作為操作系統的外殼,為用戶提供使用操作系統的介面。它是命令語言、命令解釋程序及程序設計語言的統稱。
shell是用戶和Linux內核之間的介面程序,如果把Linux內核想像成一個球體的中心,shell就是圍繞內核的外層。當從shell或其他程序向
Linux傳遞命令時,內核會做出相應的反應。shell是一個命令語言解釋器,它擁有自己內建的shell命令集,shell也能被系統中其他應用
程序所調用。用戶在提示符下輸入的命令都由shell先解釋然後傳給Linux核心。