1. 程式人生 > >shell學習筆記1 【linux shell 編程從初學到精通第2版】

shell學習筆記1 【linux shell 編程從初學到精通第2版】

$1 註釋 文件名 man 輸出 當前 進制數 2.4 it is

  1. 已登錄用戶的個數: who | wc -l
  2. 查看系統有哪些用戶登錄 who
  3. 新建一個文件/bin/ct11,在文件中輸入一條命令,chmod為該文件設置執行權限

# cat > /bin/ct11

Who | wc -l

ctrl+d

# cd /bin

# chmod +x ct11

# ./ct11

執行結果:

2

  1. # echo 轉義序列:

\c :指示echo 不要打印 最後的換行符號

\a :警示字符,通常是ASCIIBEL字符

\b :退格

\f : 換頁

\n :換行

\r:回車

\t:水平制表符

\v:垂直制表符

\\ :反斜杠字符

\oddd:將字符變成3位的八進制數值

  1. Printf 語句printf “i said ‘%s,%s1,%s2,%s3’\n” this is my pen
  2. 清楚屏幕 clear
  3. Echo輸入一段文字分行追加到文件cc11echo -e “werw\nsfsd” >>cc11
  4. aa.txt文件中的ascii回車去除,內容寫到file.txt

# tr -d ‘\r’ < aa.txt > file.txt

  1. aa.txt文件中的回車去除,然後利用管道對其文件內容排序後輸入到文件file.txt

# tr -d ‘\r’ <aa.txt | sort >file.txt

  1. 關閉自動打印輸入字符的功能
    stty -echo
  2. 回復自動打印輸入字符的功能 stty echo
  3. 跟蹤功能 set -x 是執行跟蹤功能打開,set +x是關閉跟蹤功能

Eg: cat > aa.sh

Set -x

Echo ss echo

Set +x

Echo sdf echo

Ctrl +d

Chmod +x aa.sh

./aa.sh執行

  1. 自動化測試課程目錄

  1. Shell 傳遞參數

新建一個tst.sh腳本,

nano -w tst.sh

編輯腳本內容如下,$1以後是以此類推第一第二個參數,$0是文件名稱參數

#!/bin/sh

name=$1

echo "my name is ${name}!"

編輯結束後保存 ctrl +o ,退出時ctrl+c

Chmod +x tst.sh 給腳本有執行權限

./tst.sh zhang

執行結果:

My name is zhang

如果是vi模式編輯模式按i,保存並退出按Esc ,:wq!

  1. unset命令可以刪除變量,刪除後不能再次使用,unset命令不能刪除只讀變量
  2. 例如:echo -e “jdkfja \n” 輸出結果:jdkfja
  3. 這裏 -e 表示對轉義字符進行替換。如果不使用 -e 選項,將會原樣輸出:jdkfja\n
  4. 命令替換是指Shell可以先執行命令,將輸出結果暫時保存,在適當的地方輸出。命令替換的語法:

`command`

註意是反引號,不是單引號,這個鍵位於 Esc 鍵下方。
  下面的例子中,將命令執行結果保存在變量中:

  • if...then...fi 是條件語句,後續將會講解。

算術運算符列表

運算符

說明

舉例

+

加法

`expr a+a+b` 結果為 30。

-

減法

`expr a?a?b` 結果為 10。

*

乘法

`expr a\*a\*b` 結果為 200。

/

除法

`expr b/b/a` 結果為 2。

%

取余

`expr bba` 結果為 0。

=

賦值

a=$b 將把變量 b 的值賦給 a。

==

相等。用於比較兩個數字,相同則返回 true。

[ a==a==b ] 返回 false。

!=

不相等。用於比較兩個數字,不相同則返回 true。

[ a!=a!=b ] 返回 true。


  1.   註意:條件表達式要放在方括號之間,並且要有空格,例如 [a==a==b] 是錯誤的,必須寫成 [ a==a==b ]。

Shell註釋

1.1 shell註釋 # 整段代碼註釋可以采用花括號括起來,類似函數

1.2 Shell字符串

1.2.1 單引號 str=’this is a string’ 單引號裏不能出現單引號

1.2.2 雙引號 str=”this is a string” 雙引號可以有變量,可以出現轉義字符

1.2.3 拼接字符串 yourname=”jkhj” greeting=”hello,”$yourname”!”

1.2.4 獲取字符串長度 string=”dfa” echo ${#string}

1.2.5 提取子字符串 string=”my name is ending” echo ${string:1:4} 輸出結果:y na

1.2.6 查找字符串 string=”my name is ane” echo `expr index “$string” is `

1.3 Shell 數組

Bash支持一維數組,不支持多維數組,並且沒有限定數組的大小

1.3.1 定義數組

Array_name={1 2 3 4}

或者Array_name={

1

2

3

4

}

單獨定義數組的各個分量:

Array_name[0]=1

Array_name[0]=2

1.3.2 讀取數組

Value=${Array_name[0]}

使用@或者*可以獲取數組中的所有元素

Value=${Array_name[*]}

Value=${Array_name[@]}

1.3.3 獲取數組的長度

num=${#Array_name[@]} 獲取數組元素的個數

Length=${#Array_name[0]} 取得數組第一個元素的長度

1.3 echo 命令

1.3.1 echo “\”It is a test\”” 輸出結果: “It is a test”

1.4 換行

1.4.1 echo “ok!\n” echo “It is a cat”

輸出結果:

Ok!

It is a cat

1.5 顯示不換行

1.5.1 echo ok!\c”echo “It is a dog”

輸出結果: ok! It is a dog

1.6 顯示結果重定向至文件 echo “It is a test” > myfile

1.7 原樣輸出字符串(不進行轉義),使用單引號 echo ‘$name\”’

1.8 顯示當前日期 echo `date`

1.9 算術運算

  1. Echo `expr 2 + 2`
  2. 乘法,echo `expr 4 \* 2`

1.10 關系運算

if [ 3 -lt 8 ]

then

echo ‘true‘

else

echo ‘false‘

Fi

1.11 關閉防火墻

Systemctl stop firewalld.service

1.12 查看shell種類 cat /etc/shells

1.13 新建文件 touch filename

shell學習筆記1 【linux shell 編程從初學到精通第2版】