shell學習 常用語句

2022-08-30 06:21:08 字數 2455 閱讀 5935

為什麼使用shell

可以快速、簡單的完成程式設計,實現自己的想法。shell非常適合編寫小的工具,因為小工具更強調的是易於配置、維護、移植等,而不是執行效率。

當自己的想法確實有必要進行優化,有必要讓它更容易修改以及修正設計目的時,可以將shell編寫的工具重新用c、c++/python等語言重新實現。

常見的shell有bash/csh/sh等

管道和重定向

ls -al > lsoutput.txt #將ls命令輸出的內容重定向到txt檔案 在》前加數字 0 1 2 分別代表輸入、標準輸出、錯誤輸出

引數2可以將錯誤輸出到檔案 而標準輸出的內容將顯示在螢幕上

>> #將輸出新增到檔案

丟棄不需要儲存的輸出的方法

kill -l 1234 >/dev/null 2>&1 #將標準輸出與錯誤輸出都丟棄到系統垃圾箱

| 管道 用來連線程序 通過管道連線的程序可以同時執行,並自動協調資料流

1 ps >psout.txt   #輸出ps內容到psout.txt

2 sort psout.txt > psout.out #對psout.txt內容進行排序 輸出到psout.out中

管道寫法

1 ps | sort | pssort.out    #將ps內容排序後輸出

自動搜尋資料夾下 所有檔案中包含的 某字串

more $(grep -l posix *)    #在當前資料夾下的檔案中  搜尋posix字串  列印出包含字串的檔名

建立指令碼

1.在指令碼第一行新增 #!/bin/sh

2.把指令碼設定為可執行 chmod +x 指令碼檔名

3.設定指令碼的許可權

shell語法

1.變數 不需要提前申明,變數被用到時會自動建立,所有變數被看做字串來儲存 獲取變數內容用$字元,

若字串裡包含空格,則需要使用括號將字串括起來,此外,等號兩邊不能有空格

$() 或 $"" 用變數的值替換此處的內容 注意 $''不發生替換

2.環境變數&引數變數

$0   當前指令碼的檔名

$n傳遞給指令碼的引數n,比如$1表示第乙個引數

$#傳遞給指令碼或函式的引數個數。

$*,$@

傳遞給指令碼或函式的所有引數

$?上個命令的退出狀態,或函式的返回值。

$$當前shell指令碼所在的程序id

$home 當前使用者家目錄

$ps1 給出當前使用者名稱、機器名和當前目錄名

$* 在乙個變數中列出所有引數 引數間用ifs中第乙個字元分隔開

$@ $*的變體 列出所有引數 與ifs無關 引數之間用空格分開

3.條件

test & [ 命令:shell布林判斷命令

檢查乙個檔案是否存在

1

if test -f fred.c

2then3…

4fi5#或者

6if [ -f fred.c ]

7then8…

9 fi

4.控制結構

條件判斷

1

ifcondition

2then

3statements

4else

if condition; then

5statements

6else

7statements

8fi

迴圈語句

1

for variable in

values2do

3statements45

done

6 exit 078

9while condition; do

10statements

1112

done

1314

15until

condition

16do

17statements

1819

done

2021

#until與while的條件測試相反

2223

case variable in

24 pattern [ |pattern] …) statements;;

25 pattern [ |pattern] …) statements;;26…

27esac

命令列表

函式

function_name ()

函式定義需要放到呼叫之前

當乙個函式被呼叫時,指令碼程式的位置引數($*/$@/$#/$1/$2等)都會被替換為函式的引數,當函式執行完,這些引數將會恢復他們之前的值

Shell指令碼常用語句

指令碼測試 window 回車是 r n linux 回車是 n yum install y dos2unix 軟體 命令 dos2unix 指令碼名 處理 sh x 與 set x 開始 set x 結束 顯示指令碼執行過程 一.變數 1.區域性變數 只在乙個範圍內使用 普通變數 file ls ...

mysql常用語句 MySQL常用語句

create table student id int primary key auto increment comment 學號 name varchar 200 comment 姓名 age int comment 年齡 comment 學生資訊 修改表注釋 alter table studen...

Shell常用語句及結構

if 語句通過關係運算子判斷表示式的真假來決定執行哪個分支 shell有三種if語句樣式,如下 語句1if expression then statement s to be executed if expression is true fi語句2 if expression then statem...