Linux Shell程式設計入門

2021-10-03 23:21:51 字數 2466 閱讀 7332

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...