Ⅰ iOS開發-需要了解的Shell腳本語法
Shell 是一個用 C 語言編寫的程序,它是用戶使用 linux 的橋梁。Shell 既是一種命令語言,又是一種程序設計語言。Shell 腳本(shell script),是一種為 shell 編寫的腳本程序。在iOS開發中,我們通常編寫一些自動化的腳本文件,來提高我們的生產效率,其本質就是通過Shell腳本對一些 xcodebuild , xcode-select , xcpretty , xcrun 等指令的封裝。本篇文章,我們就針對 Shell 腳本的語法,做一些羅列,以輔助我們去完成一些自動化封裝。
執行腳本
.sh 文件為 Shell 腳本文件格式,通過 sh 指令執行腳本文件
執行結果:
1.通過 echo 輸出變數時,需要使用 $ 或者 ${} 修飾
2. (重點)定義變數時,等號之間不能有空格,不然會誤認為變數為一個指令
3.可以直接修改 name 變數的值,即當前 name 默認為 readwrite 許可權
4.我們給 _var 用 readonly 修飾後,再修改值會拋出異常
執行結果:
執行結果:
執行結果:
執行結果:
$@ 和 $* 都是輸出所有參數,前者是 "$1" "$2" "$3" "$4" ,後者是 "$1 $2 $3 $4"
執行結果:
注意:條件表達式要放在方括弧之間,並且要有空格,例如: [$a==$b] 是錯誤的,必須寫成 [ $a == $b ] 。
關於文件檢測運算符,這里還是都羅列一下吧,比較重要:
執行結果:
執行結果:
執行結果:
執行結果:
2.有參數
執行結果:
注意: $10 不能獲取第十個參數,獲取第十個參數需要 ${10} .
使用 man 查詢 指令文檔
比如我們想查看 xcodebuild 指令下都有哪些操作,直接在終端執行:
當我們不清楚某一個指令下的操作時,就可以通過 man 查詢,然後輔助我們來編寫 Shell 指令。
在iOS下,了解下這些 Shell 語法就足夠了,已經可以幫助我們完成大部分的 Shell腳本 的編寫或者閱讀別人的 Shell 源碼。不需要記憶,簡單看下就可以。
Ⅱ linux執行sh腳本的指令有哪些
bash shell 腳本的方法有多種,現在作個小結。假設我們編寫好的shell腳本的文件名為hello.sh,文件位置在/data/shell目錄中並已有執行許可權。
方法一:切換到shell腳本所在的目錄(此時,稱為工作目錄)執行shell腳本:
復制代碼代碼如下:
cd /data/shell
./hello.sh
./的意思是說在當前的工作目錄下執行hello.sh。如果不加上./,bash可能會響應找到不到hello.sh的錯誤信息。因為目前的工作目錄(/data/shell)可能不在執行程序默認的搜索路徑之列,也就是說,不在環境變數PASH的內容之中。查看PATH的內容可用 echo $PASH 命令。現在的/data/shell就不在環境變數PASH中的,所以必須加上./才可執行。
方法二:以絕對路徑的方式去執行bash shell腳本:
復制代碼代碼如下:
/data/shell/hello.sh
方法三:直接使用bash 或sh 來執行bash shell腳本:
復制代碼代碼如下:
cd /data/shell
bash hello.sh
或
復制代碼代碼如下:
cd /data/shell
sh hello.sh
注意,若是以方法三的方式來執行,那麼,可以不必事先設定shell的執行許可權,甚至都不用寫shell文件中的第一行(指定bash路徑)。因為方法三是將hello.sh作為參數傳給sh(bash)命令來執行的。這時不是hello.sh自己來執行,而是被人家調用執行,所以不要執行許可權。那麼不用指定bash路徑自然也好理解了啊,呵呵……。
方法四:在當前的shell環境中執行bash shell腳本:
復制代碼代碼如下:
cd /data/shell
. hello.sh
或
復制代碼代碼如下:
cd /data/shell
source hello.sh
前三種方法執行shell腳本時都是在當前shell(稱為父shell)開啟一個子shell環境,此shell腳本就在這個子shell環境中執行。shell腳本執行完後子shell環境隨即關閉,然後又回到父shell中。而方法四則是在當前shell中執行的。
Ⅲ shell命令中用source 和sh(或者bash)執行腳本的區別,以及export的作用
用戶登錄到Linux系統後,系統將啟動一個用戶shell,我們暫且稱這個shell為shell父。在這個shell父中,可以使用shell命令或聲明變數,也可以創建並運行shell腳本程序。
當使用sh或者bash運行shell腳本程序時,系統將創建一個子shell,我們暫且稱為shell子。此時,系統中將有兩個shell,一個是登錄時系統啟動的shell父,另一個是系統為運行腳本程序創建的shell子。
當一個腳本程序運行完畢,腳本shell子將終止,返回到執行該腳本之前的shell父。這時腳本中創建的變數或者環境變數(export的變數)是在shell子中創建的,只在shell子中有效,在shell父中是無法訪問的source(或者.)的作用是文件包含,當使用source運行腳本程序時,系統並不會創建子shell,而是將腳本中的命令放到shell父中運行,這時腳本中創建的變數或者環境變數(export的變數)相當於是在shell父中創建的,在shell父中是可以訪問的。
因此使用source執絕拆行修改後的配置文件會直春昌接生效,不需要重啟export 的作用是為當前shell設置環境並森棗變數,這樣變數在其子shell也可以訪問,當然,在其父shell中還是無法訪問的普通的變數只在當前shell中可以訪問,在父shell或者子shell中都無法訪問。
export 也是 bash 的一個內置命令。它主要是用來將父 shell 里的變數導出供子 shell 使用。
它有如下特徵:
Ⅳ linux shell 重啟命令
linux shell 重啟命令有五個,分別如下:
1、shutdown。
2、poweroff。
3、init。
4、reboot。
5、halt。
Linux,全稱GNU/Linux,是一種免費使用和自由傳播的類UNIX操作系統,其內核由林納斯·本納第克特·托瓦茲於1991年10月5日首次發布,它主要受到Minix和Unix思想的啟發,是一個基於POSIX的多用戶、多任務、支持多線程和多CPU的操作系統。
相關簡介
Linux不僅系統性能穩定,而且是開源軟體。其核心防火牆組件性能高效、配置簡單,保證了系統的安全。在很多企業網路中,為了追求速度和安全,Linux不僅僅是被網路運維人員當作伺服器使用,甚至當作網路防火牆,這是Linux的一大亮點。
Linux具有開放源碼、沒有版權、技術社區用戶多等特點,開放源碼使得用戶可以自由裁剪,靈活性高,功能強大,成本低。尤其系統中內嵌網路協議棧,經過適當的配置就可實現路由器的功能。這些特點使得Linux成為開發路由交換設備的理想開發平台。
Ⅳ sh代表什麼意思
1.sh是linux中運行shell的命令,是shell的解釋器,shell腳本是linux中殼層與命令行界面,用戶可以在shell腳本輸入命令來執行各種各樣的任務。
要運行shell腳本,首選需要給shell腳本許可權,這顫缺里里以hello.sh文件為例,首先需要按下「crtl+shift+T」打開終端窗口:
(5)shellsh命令擴展閱讀
使用用戶的預設憑證和環境執行 shell。
在UEFI環境下,EFI的Shell環境提供了一組豐富的擴展和增強的命令,在以後的計算機中,傳統的DOS界面將會被SHELL環境所取代。
所有的.exe文件將不會在以後支持SHELL的環境中出現,取而代之的文件後綴是.efi。在SHELL環境下,分為IA32和X64,32位的*.efi文件不能在X64的計算機中運行。
Ⅵ 如何運行shell命令第一行為什麼是# !/bin/sh
因為shell程序是解釋執行的,所以不需要編譯裝配成目標程序,按照shell編程的慣例,以bash為例,程序的第一行一般為 「# !/bin/bash」,其中# 表示該行是注釋,嘆號「!」告訴shell運行嘆號之後的命令並用文件的其餘部分作為輸入,也就是運行/bin/bash並讓/bin/bash去執行shell程序的內容。 執行shell程序的方法有三種:1、sh shell程序文件名 這種方法的命令格式為: bash shell程序文件名 這實際上是調用一個新的bash命令解釋程序,而把shell程序文件名作為參數傳遞給它。新啟動的shell將去讀指定的文件,執行文件中列出的命令,當所有的命令都執行完結束。該方法的優點是可以利用shell調試功能。 2、sh<shell程序文件名 格式為: bash<shell 程序文件名 這種方式就是利用輸入重定向,使shell命令解釋程序的輸入取自指定的程序文件。 3、用chmod命令使shell程序成為可執行的 一個文件能否運行取決於該文件的內容本身可執行且該文件具有執行權。對於shell程序,當用編 輯器生成一個文件時,系統賦予的許可許可權都是644(rw-r-r--),因此,當用戶需要運行這個文件時, 只需要直接鍵入文件名即可。 在這三種運行shell程序的方法中,最好按下面的方式選擇:當剛建立一個shell程序,對它的正確性還沒有把握時,應當使用第一種方式進行調試。當一個shell程序已經調試好時,應使用第三種方式把它固定下來,以後只要鍵入相應的文件名即可,並可被另一個程序所調用。