shell指令碼語法

2022-07-30 06:48:11 字數 2453 閱讀 8672

其他:

grep 

fgrep 不適用真正表示式,速度塊

面向過程:著眼點在過程中

物件導向:物件

shell指令碼程式設計:

父shell賦予的變數 在子shell中是無法獲取到的

變數賦值: name=jerry

變數的引用:$name 也可以使用$ 大多數情況下{}是可以使用的

animal=pig

echo "there are some $s"

echo 'there are some $s'              單引用叫做強引用 雙引號弱引用

本地變數

name=value(生命週期,整個bash)

區域性變數

local varname=value 作用域 當前**段

環境變數: 作用域 當前shell程序及其子程序

export varname=value 

指令碼在執行時,會啟動乙個子shell程序,所以當前指令碼申明的環境變數是有用的

命令航中啟動指令碼會整合當前shell環境變數

系統自動執行的指令碼(非命令列啟動)就需要自我定義環境變數

位置變數

$1,$2

特殊變數:

$?:上乙個命令執行狀態返回值:

程式執行:可能有兩個返回值 執行狀態返回**:0成功,1-255失敗  (1,2,127系統預留,不能隨便定義)

輸出重定向:

2>

2>>

/dev/null 裝置,軟體裝置,bit bucket 作用:不顯示內容,吞噬任何輸出 用於消除不想顯示的輸出

unset name 取消變數 消除變數所佔的記憶體gc

檢視當前shell的變數

set檢視當前shell的環境變數

printenv

envexport

指令碼:命令的堆砌

條件比較判斷

if[ expression ]

if[ [ expression ] ]

test expression

整數比較:

-eq 測試兩個整數是否相等 比如$a -eq $b  表示式的返回值是0 或者1-255

-ne 測試兩個整數是否不等: 不等,為真,不等為假

-gt  測試乙個數是否大於另外乙個數

-lt   測試乙個數是否小於另外乙個數

-ge 大於後者等於

-le 小於或等於

! id user6 && useradd user6 使用者不存在時,新增使用者user6

反引號``

demo:

#!/bin/bash

! id user1 &> /dev/null && useradd user1 && echo "user1" | passwd --stdin user1 &> /dev/null || echo "user1 exits"

users=`wc -l /etc/passwd | cut -d: -f1`

echo "$users users"7

作用是。如果user1不存在 則新增使用者user1並且設定密碼為user1 否則則顯示user1 exits 。並且顯示user數目

指令碼中一大堆的&& || 怎麼運算。從左往右看,乙個表示式乙個表示式看,true && expr1 ,expr1才會執行 ,false || expr1 ,expr1才會執行

if 判斷條件; then

statement

statement

fiif 判斷條件; then

statement1

statement2

else

statement3

fi反引號 獲取執行的結果

不寫的話一般是獲取命令的執行狀態返回值

date +%s

shell 中的加減乘除

let c=$a+$b

c=$[$a+$b]

c=$(($a+$b))

c='expr $a + $b'

提前結束指令碼命令 exit; exit是可以返回自定義的指令碼 狀態碼

exit 0

檔案測試

檔案存在 -e file

檔案檔案是否普通檔案 -f file

測試是否是目錄 -d path

-r-w

-x[ -e /etc/inittab ]

測試叫本是否有語法錯誤

bash -x 指令碼

$# 多少個引數

$?引數列表

$*引數列表

位置引數

shift $1 $2

shift 剔除引數

字串比較

== 相等

!=不等

-n string 測試字串是否為空 ,空則真

-s string 與上述相反

指令碼用的一些東西

bin=`dirname "$"`

bin=`cd "$bin"; pwd`

Shell指令碼語法

定義單變數 p name kang 使用單變數 echo p name js 輸出kang.js echo p name.js 輸出kang.js cp p name.js copy.js 命令1 命令2 如果左邊的 命令1 執行成功,那麼右邊的 命令2 才會被執行。命令1 命令2 與 相反。如果 ...

shell指令碼 語法

條件測試 test 命令test 可以測試乙個條件是否成立,如果測試條件為真,則該命令的exitstatus為0,反之,exitstatus為1。注意 命令 各引數之間應該用空格隔開,以 結尾。但是 不是命令。測試命令 d dir 如果dir存在並且是乙個目錄則為真 f file 如果file存在並...

shell指令碼語法

測試乙個條件是否成立,python ubuntu 1004 var 2 python ubuntu 1004 test var python ubuntu 1004 echo 0python ubuntu 1004 test var gt 5 python ubuntu 1004 echo 1或者 ...