shell指令碼,是一種為shell編寫的指令碼程式,一般檔案字尾為.sh
chmod file_path
#! /bin/sh 或者 #!/usr/bin/env bash
#!向系統表示,其後路徑指定的程式是解釋該指令碼檔案的shell直譯器
指令碼檔案的第一行必須指明執行該指令碼的程式
單行注釋:#
多行注釋::《注意字串可以使用單雙引號,但是單引號內不可以識別變數
echo 「hello, world」 # hello, world
echo 「hello, 「zp」」 # hello, 「zp」 字串中包含引號,用\轉移
echo -e 「yes\nno」 # yes
no -e作用是開啟轉義,否則輸出yes\nno;\n表示換行,\c表示不換行
name = zp
echo 「hello, $」 # hello, zp $ 可以輸出變數
echo 「str」 > file_name # 輸出重定向
printf format arg1 arg2
例子,printf 「%d %s\n」 1 「abc」 # 1 abc
需要注意的是,格式即使只指定乙個引數,多餘的引數也會按照指定的格式輸出;
也可以使用格式化輸出,類似c語言
read -[ps***] var1 var2
若是read後有變數名,則將輸入數值輸入到變數當中;否則,輸出到$reply
-p 提示語句,例子 read -p 「text」 var1 var2 … ,text為提示語句
-s 遮蔽回顯,例子 read -s pwd,不顯示使用者的輸入
-t 等待時間,例子 read -t sec name ,指定等待時間為5秒
-d 輸入分界
-n 確定引數個數
ln [引數] [原始檔或者目錄] [目標檔案或目錄]
背景知識:
linux檔案系統中,有所謂的鏈結(link),我們可以將其視為檔案的別名,而鏈結又可分為兩種 : 硬鏈結(hard link)與軟鏈結(symbolic link)。
硬鏈結的意思是乙個檔案可以有多個名稱,以檔案副本的形式存在,但是不占用實際空間;
而軟鏈結的方式則是產生乙個特殊的檔案,該檔案的內容是指向另乙個檔案的位置,類似windows作業系統中的快捷方式。
硬鏈結是存在同乙個檔案系統中,而軟鏈結卻可以跨越不同的檔案系統。
命令引數:
-s # 建立軟鏈結;引數預設狀態下,預設建立硬鏈結
-f # 強制ln命令替換掉已經存在的目的路徑;與-n命令相對
-n # 如果鏈結檔案已經存在,那麼不覆蓋檔案的內容;引數預設狀態下預設不覆蓋
沒有資料型別;無需提前宣告,給變數賦值即會直接創造變數
word = 「hello」 # 直接建立變數
word =command
或者 word = $(command) # 將命令的結果賦值給變數
v ar
或者
或者va
r或者var
例子,echo $ # hello
unset word
echo $ # (空)
readonly word
不可修改,不可以由unset刪除
即發生某種條件時對於變數進行替換,替換條件放在{}當中。
$ # 變數未定義或者值為空時,返回值為word的內容,否則返回變數的值
$ # 同:-,當變數未定義或者值為空時,將word的值賦值給變數,同時返回
$ # 當變數未賦值,程式終止執行,將error_msg送到標準錯誤輸出;否則正常替換
$ # 當變數已經賦值,其值用word替換;否則不進行替換
$ # 從變數中提取子串
$ # 變數中的字元個數
[[ ]] 包起來的表示式被稱之為檢測命令或者是基元,幫助檢測條件的結果
if [[ 語句1 ]]; then
pass
elif [[ 語句2 ]]; then
pass
else
pass
fifor迴圈
for arg in elem1, … elemn;
dopass
done
while迴圈
while [[ condition ]];
dopass
done
[ function ] funname [()]
函式返回值只能是整數;若是不加return語句,預設返回最後一條命令的執行結果
函式使用前必須首先定義,否則會報錯
funname [arg]
$? 直接在函式執行後呼叫即可
所謂的位置引數是在呼叫乙個函式並傳給它引數時建立的變數。
$0 指令碼名稱
$num 第num個引數列表
$* 或者 $@ 除$0之外的所有位置引數
$# 不包括$0在內的位置引數的個數
$funcname 函式名稱
linux Shell程式設計入門
本文結合大量例項闡述如何編寫乙個shell指令碼。為什麼要進行shell程式設計 在linux系統中,雖然有各種各樣的圖形化介面工具,但是sell仍然是乙個非常靈活的工具。shell不僅僅是命令的收集,而且是一門非常棒的程式語言。您可以通過使用shell使大量的任務自動化,shell特別擅長系統管理...
Linux Shell程式設計入門
從程式設計師的角度來看,shell本身是一種用c語言編寫的程式,從使用者的角度來看,shell是使用者與linux作業系統溝通的橋梁。使用者既可以輸入命令執行,又可以利用shell指令碼程式設計,完成更加複雜的操作。在linux gui日益完善的今天,在系統管理等領域,shell程式設計仍然起著不可...
linux shell 程式設計入門
1.1.1 開頭 程式必須以下面的行開始 必須方在檔案的第一行 bin sh 符號 用來告訴系統它後面的引數是用來執行該檔案的程式。在這個例子中我們使用 bin sh來執行程式。當編輯好指令碼時,如果要執行該指令碼,還必須使其可執行。要使指令碼可執行 chmod x filename 這樣才能用.f...