shell基礎

shell 變量:正則表達式

name=」aaa」shell

echo $namevim

注意事項:數組

變量名和等號之間不能有空格bash

不能使用標點符號測試

不能使用bash裏的關鍵字spa

只讀變量:code

name=」aaa」blog

關鍵字:readonly name進程

刪除變量:

unset name

變量類型:

1 局部變量:

局部變量在腳本或命令中定義,僅在當前shell實例中有效,其餘shell啓動的程序不能訪問局部變量

2 環境變量:

全部的程序,包括shell啓動的程序,都能訪問環境變量,有些程序須要環境變量來保證其正常運行。必要的時候shell腳本也能夠定義環境變量。

系統環境變量:

查看全部環境變量:env

刪除環境變量:unset HAHA

舉個例子:

PPID:是當前進程的父進程的PID

PWD:當前工做目錄。

RANDO:隨機數變量。每次引用這個變量會獲得一個0~32767的隨機數。

查看全部環境變量:env

刪除環境變量:unset

用vim在/etc/profile文件中添加咱們想要的環境變量

設置新的環境變量 
export 新環境變量名=內容 
例:export MYNAME=」aaa」

生效:source /etc/profile

shell 字符串

單引號和雙引號的區別:

單引號裏的任何字符都會原樣輸出,單引號字符串中的變量是無效的;

雙引號的優勢:

  • 雙引號裏能夠有變量
  • 雙引號裏能夠出現轉義字符

獲取字符串的長度:

str=」abcd」

echo ${#str}

提取字符串:

str=」abcd」

#表示從字符串第二個字符開始截取 ,取 4個字符

echo ${str:1:4}

shell 數組

定義數組

arr=(aa bb cc)

讀取數組

echo ${arr[0]}

獲取數組的長度

echo ${arr[@]}

echo ${arr[*]}

shell 多行註釋:

:<<EOF

      xxxx

         xxxxx

EOF

shell 基本運算符

算數運算符

+ 加法

- 減法

* 乘法

/  除法

% 取餘

= 賦值

==  比較(相等)

!= 不相等

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@localhost ~] # expr 10 + 20
30
[root@localhost ~] # echo $((10+30))
40
[root@localhost ~] # n=10
[root@localhost ~] # let n++
[root@localhost ~] # echo $n
11
[]和[[]]區別
[[]]更強大,支持字符串的模式匹配(使用=~操做符時甚至支持shell的正則表達式)
[root@localhost ~] # sh t.sh
包含
[root@localhost ~] # cat t.sh
#!/bin/bash
a= "xxoo"
if  [[ $a =~  "x"  ]];  then
     echo  "包含"
else
     echo  "不包含"
fi

 

關係運算符

關係運算符只支持數字,不支持字符串,除非字符串的值是數字

-eq  是否相等

-ne  是否不相等

-gt  表示大於

-lt  表示小於

-ge  大於等於

-le 小於等於

布爾運算符

-o 或運算 兩個表達式只要有一個是true 就返回true

[ $a -lt 20 -o $b -gt 100 ] 返回 true

-a 與運算 兩個表達式都爲true才返回true

[ $a -lt 20 -a $b -gt 100 ] 返回 false

邏輯運算符

&& 等同於 –a

|| 等同於-o

if [[ $a –lt $b  && $b –gt 100 ]]; then

      echo 「」

else

      echo 「」

fi

字符串運算符

=: 檢測兩個字符是否相等

!=: 檢測兩個字符不相等

-z : 是否爲空

-n :字符串的長度是否爲0

 

文件測試運算符

-b 檢測文件是否爲塊設備

-d  是否爲目錄

-f 是否爲普通文件

-r 是否可讀

-w 是否可寫

-x 是否可執行

shell echo 命令

name=」aaa」

echo –e 「$name \n」

-e 開啓轉義

\n 換行

printf

%s 將參數按字面意思解釋爲字符串

printf "%-10s\n"  aaabbb

-10s 指一個寬度爲10個字符(-表示左對齊,沒有則表示右對齊),任何字符都會被顯示在10個字符寬的字符內,若是不足則自動以空格填充,超過也會將內容所有顯示出來。

%f 將參數按浮點數打印

%-4.2 小數點後面保留兩位小數 

左對齊看不出效果

shell 流程控制

#!/bin/bash

a=30

b=50

if [ $a == $b ]; then

      echo "a等於b"

elif [ $a -gt $b ]; then

      echo "a大於b"

elif [ $a -lt $b ]; then

      echo "a小於b"

else

      echo "沒有符合的條件"

fi

 

#!/bin/bash

:<<EOF

for i in {1..100}

do

      echo $i

done

EOF

for i in `seq 1 100`

do

      echo $i

done

===========while=======

#!/bin/bash

int=0

while (($int<=5))

do

        echo $int

        #let "int++"

        let int=int+1

done

[root@master ~]# cat while_true.sh

#!/bin/bash

:<<EOF

while :

do

      echo "xx"

done

EOF

while true

do

      echo "oo"

done

[root@master ~]# cat  until.sh

#!/bin/bash

a=0

until [ $a -gt 10 ]

do

      echo $a

      a=`expr $a + 1`

done

[root@master ~]# cat case.sh

#!/bin/bash

echo "輸入一個1到4之間的數字"

echo "你輸入的數字爲:"

read num

case $num in

      1)

      echo "1"

      ;;

      2)

      echo "2"

      ;;

      3)

      echo "3"

      ;;

      *)

      echo "你輸入的數字有誤!請從新輸入"

      ;;

esac

相關文章
相關標籤/搜索