linux 的選項又分為短格式選項和長格式選項。
command1;command2...
--不管command1命令是否執行成功,command2命令都執行。
command1&command2...
--command1命令和command2命令同時執行
command1&&command2...
--只在command1命令執行後,才執行command2命令。
如:sleep 7h && make -j8 2>&1 |tee build-log.txt
shell知識
$ 美元符號:即使用之前已定義了的變數,變數名外面的花括號是可選的,加不加都行,加花括號是為了幫助直譯器識別變數的邊界,推薦給所有變數加上花括號,這是個好的程式設計習慣。
your_name="qinjx"
echo $your_name
echo $
單行注釋 以 # 開頭的行就是注釋,會被直譯器忽略。
多行注釋 可以使用以下格式:
:傳遞引數
我們可以在執行 shell 指令碼時,向指令碼傳遞引數,指令碼內獲取引數的格式為:$n。n代表乙個數字,1 為執行指令碼的第乙個引數,2 為執行指令碼的第二個引數,以此類推……
以下例項我們向指令碼傳遞三個引數,並分別輸出,其中$0為執行的檔名:
echo "shell 傳遞引數例項!";
echo "執行的檔名:$0";
echo "第乙個引數為:$1";
echo "第二個引數為:$2";
echo "第三個引數為:$3";
為指令碼設定可執行許可權,並執行指令碼,輸出結果如下所示:
執行 chmod +x test.sh
執行 ./test.sh 1 2 3
輸出結果:
shell 傳遞引數例項!
執行的檔名:./test.sh
第乙個引數為:1
第二個引數為:2
第三個引數為:3
表示式和運算子之間要有空格,例如 2+2 是不對的,必須寫成 2 + 2,
條件表示式要放在方括號之間,並且要有空格,例如:[$a==$b]是錯誤的,必須寫成[ $a == $b ]。
完整的表示式要被 ` ` 包含,注意這個字元不是常用的單引號,在 esc 鍵下邊。如 val=`expr 2 + 2`
= 放在別的地方是賦值,放在if [ ] 裡就是字串等於,shell裡面沒有==的,那是c語言的等於
if [ $ans ] 等價於 if [ -n $ans ]
如果字串變數非空(then) , 空(else)
echo "input your choice:"
read ans
if [ $ans ]
then
echo no empty
else
echo empth
fi 傳統if 從句子——以條件表示式作為 if條件
if [ 條件表示式 ]
then
command
command
command
else
command
command
fi條件表示式
if [ -f file ] 如果檔案存在
if [ -d ... ] 如果目錄存在
if [ -s file ] 如果檔案存在且非空
if [ -r file ] 如果檔案存在且可讀
if [ -w file ] 如果檔案存在且可寫
if [ -x file ] 如果檔案存在且可執行
if [ int1 -eq int2 ] 如果int1等於int2
if [ int1 -ne int2 ] 如果不等於
if [ int1 -ge int2 ] 如果》=
if [ int1 -gt int2 ] 如果》
if [ int1 -le int2 ] 如果<=
if [ int1 -lt int2 ] 如果<
if [ $a = $b ] 如果string1等於string2
字串允許使用賦值號做等號
if [ $string1 != $string2 ] 如果string1不等於string2
if [ -n $string ] 如果string 非空(非0),返回0(true)
if [ -z $string ] 如果string 為空
if [ $sting ] 如果string 非空,返回0 (和-n類似)
Shell 程式設計知識點集錦
shell 指令碼是按行分隔每一條 shell 語句。如果每一條shell語句寫在單獨一行,此時可以加分號,也可以不加,沒有什麼區別。如果多條 shell 寫在同一行,那麼此時需一定要用分號將不用語句分隔開來。dev null 代表空裝置檔案,類似於 windows 的 站。代表重定向到 例如 ec...
shell 程式設計知識點彙總
程式設計的開始 bin bash 這部分內容是必須寫的,並且在首行,就是宣告這是乙個shell程式。如何執行shell指令碼 第一種是 附許可權給指令碼,直接執行 chmod 755 指令碼名字 例如 chmod 775 hello.sh 接著我們可以使用絕對路徑來執行我們的指令碼,就可以執行指令碼...
Shell 程式設計知識點集錦
shell 指令碼是按行分隔每一條 shell 語句。如果每一條shell語句寫在單獨一行,此時可以加分號,也可以不加,沒有什麼區別。如果多條 shell 寫在同一行,那麼此時需一定要用分號將不用語句分隔開來。輸出 輸入重導向 2 2 2檔案描述符 file descriptor 用乙個數字 通常為...