shell腳本基礎

一:shell基礎html

概述:shell腳本與python同樣是一種解釋性語言python

應用:c++

Shell 腳本的優點在於處理偏操做系統底層的業務,例如,Linux 內部的不少應用(有的是應
用的一部分)都是使用 Shell 腳本開發的,由於有 1000 多個 Linux 系統命令爲它做支撐,
特別是 Linux 正則表達式以及三劍客 grep、awk、sed 等命令。
對於一些常見的系統腳本,使用 Shell 開發會更簡單、更快速,例如,讓軟件一鍵自動化安
裝、優化,監控報警腳本,軟件啓動腳本,日誌分析腳本等,雖然 Python 也能作到這些,但
是考慮到掌握難度、開發效率、開發習慣等因素,它們可能就不如 Shell 腳本流行以及有優點
了。對於一些常見的業務應用,使用 Shell 更符合 Linux 運維簡單、易用、高效的三大原則

二:shell 腳本web

#!/bin/bash         
   #   ————————》#!是一個約定的標記,它告訴系統這個腳本須要什麼解釋器來執#         
   #行,即便用哪種 Shell;後面的/bin/bash就是指明瞭解釋器的具體位置。
echo "Hello World !"  #這是一條語句

1 查看shell正則表達式

 

  查看默認shellshell

 

二 變量vim

1 變量的聲明與調用數組

2 變量的引用注意點bash

3 將命令結果賦值給變量運維

[root@server1 ~]# log=$(cat a.txt)  #命令結構賦值
[root@server1 ~]# echo $log  #輸出變量
server { listen port; server_name localhost ; location / { root html; index index.html index.htm; } } server { listen port; server_name localhost ; location / { root html; index index.html index.htm; } }
[root@server1 ~]# log1=$(cat text.sh)  #命令結構賦值
[root@server1 ~]# echo $log1    #輸出變量
#!/bin/bash url="http://www.baidu.com" web1="百度一下你就知道 ${url}" web2='百度一下你就知道 ${url}' echo $web1 echo $web2

只讀變量:

4 變量的刪除

三 變量的做用域

1 局部變量

[root@server1 ~]# vim t1.sh
[root@server1 ~]# chmod +x t1.sh 
[root@server1 ~]# ./t1.sh 
99
[root@server1 ~]# cat t1.sh 
#!/bin/bash
#定義函數

function func(){
	a=99
}

#調用函數
func
#輸出函數內部變量
echo $a

2 全局變量

[root@server1 ~]# a=22    #定義一個全局變量
[root@server1 ~]# echo $a   #輸出全局變量
22
[root@server1 ~]# bash      # 進入shell子進程
[root@server1 ~]# echo $a  #輸出變量值

[root@server1 ~]# exit #推出shell進程
exit
[root@server1 ~]# export a  #將a定義爲環境變量
[root@server1 ~]# bash      #進入shell環境
[root@server1 ~]# echo $a  #輸出變量值
22
[root@server1 ~]# exit  #推出shell環境
exit

 三:shell命令替換

四:shell 腳本傳遞參數

2 給函數傳遞位置參數

[root@server1 ~]# vim t4.sh
[root@server1 ~]# cat t4.sh 
#!/bin/bash
#定義函數
function func() {
	echo "language :$1"
	echo "URL:$2"
}

#調用函數
fun c++ http://c.biancheng.net/cplus
[root@server1 ~]# chmod +x t4.sh 
[root@server1 ~]# ./t4.sh 
language :c++
URL:http://c.biancheng.net/cplus

五: shell中特殊的變量

Shell特殊變量:Shell $#、$*、$@、$?、$$

變量 含義
$0 當前腳本的文件名。
$n(n≥1) 傳遞給腳本或函數的參數。n 是一個數字,表示第幾個參數。例如,第一個參數是 $1,第二個參數是 $2。
$# 傳遞給腳本或函數的參數個數。
$* 傳遞給腳本或函數的全部參數。
$@ 傳遞給腳本或函數的全部參數。當被雙引號" "包含時,$@ 與 $* 稍有不一樣,咱們將在《Shell $*和$@的區別》一節中詳細講解。
$? 上個命令的退出狀態,或函數的返回值,咱們將在《Shell $?》一節中詳細講解。
$$ 當前 Shell 進程 ID。對於 Shell 腳本,就是這些腳本所在的進程 ID。

 

六 shell 中字符串的操做

1 字符串的拼接(直接拼接)

[root@server1 ~]# name="good"
[root@server1 ~]# name1="hello"
[root@server1 ~]# echo name name1
name name1
[root@server1 ~]# echo $name $name1
good hello

2字符串的切割

[root@server1 ~]# url="www.baidu.com"
[root@server1 ~]# echo ${url:2:9}
w.baidu.c
[root@server1 ~]# echo ${url:4:9}
baidu.com
[root@server1 ~]# echo ${url:4:-1}
baidu.co
[root@server1 ~]# echo ${url:-4:-1}
www.baidu.com

七 shell中的數組

1 數組的定義

[root@server1 ~]# lst=(1 2 3 4 5 6 7)  #定義數組
[root@server1 ~]# echo ${lst[1]}   #查看索引對應的數組
2
[root@server1 ~]# echo ${lst[2]}
3
[root@server1 ~]# echo ${lst[3]}
4
[root@server1 ~]# echo ${lst[*]}   #查看全部數組元素
1 2 3 4 5 6 7 
[root@server1 ~]# echo ${lst[@]}  #查看全部元素數組
1 2 3 4 5 6 7
[root@server1 ~]# lst=(1 2 3 4 5 6 7 8)
[root@server1 ~]# echo ${#lst[*]}    #查看數組長度
8

2 數組拼接

[root@server1 ~]# lst2=(a b c d e f)
[root@server1 ~]# lst0=(${lst[*]} ${lst2[*]})
[root@server1 ~]# echo ${lst0[*]}
1 2 3 4 5 6 7 8 a b c d e f

3 刪除數組

[root@server1 ~]# unset lst0[1]
[root@server1 ~]# echo ${lst0[*]}
1 3 4 5 6 7 8 a b c d e f
相關文章
相關標籤/搜索