bash 指令碼筆記

2021-07-04 21:21:29 字數 4816 閱讀 2075

$*輸入了什麼引數

$#輸入了多少個引數

$1輸入的第乙個引數,依此類推,直到 $9

$?上一次的執行結果

$*為」1 2 3」(一起被引號包住)

$@為」1」 「2」 「3」(分別被包住)

$#為3(引數數量)

[ -d target ] target 是否是 目錄

[ -f target ] 是否是檔案

[ -e target ] 是否存在(目錄和檔案都適用)

[ -x target ] 可執行檔案

[ -n 「target」 ] 是否不為null(non-zero),用雙引號把變數名包起來[ -z 「target」 ] 字串是否為空(zero),用雙引號把變數名包起來

詳情 見man test

//變數賦值時,」=」 左右兩邊不能有空格

age=30

if [ $ -ge 20]

then

echo「age is bigger than 20」

else

echo「age is less than 20」

fi// ---others-----

–eq(equals)

–ne(not equal)

-gt( greater than)

-lt(lessthan)

-ge(greater or equal than)

-le(less than or equal )

eg:

bootpercent= df –ht | grep 「sda1」 | awk 「」 | cut –d "%" –f1

if [$bootpercent –ge 80 ];then

echo

"percent is bigger than 80,warning!!!"

else

echo

"percent is less than 80"

fi

```bash

# "=" 需要空格

[ str1= str2 ]

# str 是否為空

[ -z str ]

```

&& ||

if

if [ $age–ge 30 ];then

echo

"great than 30"

elif [ $age –ge 40 ];then

echo 「great then

40」 else

echo 「50」

fi

case

#`` 裡面是命令:今天週幾

week= `date +%w`

case

$week

in :

start):

echo「start」

;;stop):

echo「stop」

;;*):

echo 「other」

;;esac

while

num=3

while [ $num –ge 0 ]

doecho

$num

num=$(($num-1)) # 『=』左邊的num不需要$ ?

done

echo

$num

for

for i in ` cat /var/user.txt`

doecho

$iecho123 | passwd –stdin $i

done

num=0

while [ $#

-gt0 ]

do num=$((num+ $1))

shift

done

echo

$num

find/etc/ -perm 755 –type f

# 跟find /etc –perm 755 | find –type f 不是一樣,切記

find /etc –user root

find /etc –iname 'user*' | xargs rm –f

# $0->整行,$1->第一列

# nr(number row):行號

# nf(number field):列號

cat/etc/passwd | awk –f ":"

'' ->列印第三行的第乙個和第四個字段

cat/etc/passwd | awk –f 'end' ->總共多少行

cat/etc/passwd | awk –f 『end』 ->總共多少列

cat/etc/passwd | awk –f 「:」 『}』

cat/etc/passwd | awk 『$1 ~/192.168.10.1/ 』 -> ~ 匹配,!~ 不匹配

# p -> print, d-> delete

cat/etc/passwd | sed –n '5'p –> 列印第五行

cat/etc/passwd | sed '3,6'd -> 列印刪除3-6行之後的內容

cat/etc/passwd | sed '/bash/' p -> 列印匹配bash 的行

cat/etc/passwd | sed –n '1,/sync/'p -> 列印第一行到匹配sync的行

cat/etc/passwd | sed –n '/root/,$'p -> 列印從匹配root 到結尾的所有行

cat/etc/passwd | sed –n '3'p | awk –f ":"

'' –> 39%

cat/etc/passwd | sed –n '3'p | awk –f ":"

'' –> 39

uniq–c  #統計連續的次數

catfile | sort –t: -k1 –r # 以:為分隔符,取第一列,倒序排列

grub 引導介面

識別硬體

初始化驅動

進入歡迎介面

設定時鐘

設定主機名

掛載檔案系統

掛載光碟機

進入3級別

啟動虛擬記憶體

設定磁碟陣列

設定防火牆

檢測硬體變化

啟動網路服務

啟動3級別中允許啟動的程序(/etc/rc.d/rc3.d中以s開頭的服務名,s99以後就是登陸介面了)

進入登陸介面

0: halt

1: singlemode user

2: multiuser without nfs

3: full multiuser

4: unused

5: x11 ( 3 with 圖形介面)

6: reboot (所以,重啟的話reboot,還可以 init 6)

檢視執行級別 runlevel

檢視sshd 服務在所有級別下的開關狀態

chkconfig –list sshd

sshd 在 3 級別下開啟/關閉

chkconfig –level 3 sshd on/off

將自己的服務指令碼改造成標準的rpm指令碼

cp sshd /etc/init.d

在 *** 中新增:

#chkconfig:2345 90 20(90為開機的順序,20為關機的順序,數值越大,優先順序越高,自定義的指令碼開機應較晚5,關機較早)

#descrption: *** server daemon

通過service 把自定義指令碼進行開啟和關閉

service *** start|stop|restart

通過chkconfig把自定義指令碼設定為開機啟動

chkconfig *** on/off

menu.sh

# cat 的 heredoc使用方法

# cat << eof

aaaaaaaaaaaaaa

bbbbbbbbbbbbb

cccccccccccccccc

eof

# 引用 menu.sh

. menu.sh

# \033[ 設定顏色的標誌,30 前底色,47 背景色,0m 還原

echo –e "\033[30;47m $str \033[0m"

bash指令碼基礎

shell 指令碼 一 如何建立新shell指令碼?1.建立包含bash命令的文字檔案。檔案第一行應為 bin bash 2.使檔案可執行 使用chmod x scripts 3.將檔案放置在使用者的 path的目錄中 bin 用於使用者的私有程式 usr local bin 本地開發 系統上的其他...

Bash 指令碼除錯

大神 bash是unix linux作業系統最常用的shell之一,它非常靈活,和awk c 配合起來異常強大 以下使用乙個測試指令碼來說明使用bash除錯的方法 test.sh bin bash echo begin awk end test.sh max 3 for i 0 i max i do...

bash指令碼基礎

新建bash指令碼 vim hello.sh bin bash echo hello world bin bash 在 bash 中 第一行的 及後面的 bin bash 就表明該檔案是乙個 bash 程式,需要由 bin 目錄下的 bash 程式來解釋執行。bash 這個程式一般是存放在 bin ...