shell筆記

在學習的時候整理的零散筆記

shell就是解決我們運維工作中經常重復性的工作,我們將工作中每天要干的重復性的工作放在一個腳本中,然后運行,解決了大部分的重復性的工作,可以做更多的其它事情。

寫shell的標準程序

*.sh ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 腳本的名字后面一般要加.sh的后綴

#!/bin/bash ? ? ? ? ? ? ? ? ? ? ? ? ?你用什么是什么shell寫的腳本

#Autor : xxx ? ? ? ? ? ? ? ? ? ? ? ? 你的名字

#Data:xxxx ? ? ? ? ? ? ? ? ? ? ? ? ? 創建腳本的時間

#Descripton:xxxx ? ? ? ? ? ? ? ?描述這個腳本是干什么用的

運行shell腳本的方法

1.bash ?*.sh ? ? ? ? ? ? ? ? ? ? ? ? ? 用bash ?執行

2.chmod +x *.sh ? ? ? ? ? ? ? ? ?給shell腳本加執行權限

3.cat ?*.sh |bash ? ? ? ? ? ? ? ? ? ?加管道符執行

4./data/*.sh ? ? ? ? ? ? ? ? ? ? ? ? 用絕對路徑執行

5.http://ip/*.sh|bash ? ? ? ? 遠程調用服務器的腳本執行

6.將腳本放到任意一個$PATH變量里面的路徑下面

 

bash -n ?*.sh ? ? ? ? ? ? ? ? ? ? ? ? 檢查腳本中的語法錯誤

bash ?-x ?*.sh ? ? ? ? ? ? ? ? ? ? ? ?跟蹤調試腳本

如果命令能識別變量就不用加$,如果不能就要加$

變量分為系統自帶的只讀變量和自定義的變量,系統自帶的只讀變量是不可更改的

自定義變量命名規則

1.不能使用系統的保留名字

2.只能使用數字,字母還有下劃線,但是數字不能開頭

3.設置變量的名字要見名知義

4.統一命名規則,大駝峰,就是所有的單詞首字母大寫

 

bash中的變量一般分為:局部變量 ;環境(全局)變量;本地變量;位置變量;特殊變量

局部變量:

局部變量只能對當前shell執行,不能在其它shell進程執行,不能在父進程和子進程執行

例:name=xixi ? ? ? ? ? ? ? ?給xixi設置一個變量名字為$name

name=$USER ? ? ? ? ?可以引用變量

name=`hostname` ?可以引用命令

set :可以查看已經定義的所有變量

unset 變量 ?:刪除變量,當我們執行完shell的時候會留下許多不用的垃圾變量,當過去很長的時間會在系統內留下許多的垃圾變量,會大量的占用系統的內存,建議用完變量以后就刪除。

echo $$ ?可以查看當前的進程編號

echo $PPTD 可以查看父進程的編號

pstree -p ? ? ? 可以查看所有進程的編號

 

環境(全局)變量

全局變量能傳到子進程,但是不能傳到父進程,在變量附加完成以后要聲明這個是全局變量 export

例 :name=xixi ? ? export $name ? 或 ?export ?name=xixi

env可以查看變量

 

環境變量

環境變量是bash自己建的特殊變量,能直接調用

例:$UID ?$PATH $SHELL ……

 

只讀變量和位置變量

只讀變量是不能修改和刪除的 ?readonly -p ?或declare -r 查看只讀變量

readonly ? name=xixi ? 聲明一個只讀變量 ,只讀變量的生命周期一般是當前進程的結束

位置變量是讓寫的腳本更靈活,加不同的參數,執行不同的功能

在腳本代碼中調用通過命令行傳遞給腳本的參數

例:$1 ? $2 ? $3 …. 分別對應的a ? b ? c ?….. ? 它對應的可以是文件也可以對應目錄

$* :所有字符的參數

$@:所有字符的參數

$#:所有參數的個數

$0 :代表腳本的名字

shift:換位符,當一個程序執行完成以后整體的參數會往左移,默認移一位,也可以更改,也就是說$1對應的a執行完成以后,會自動的往左移一位,$1對應的變成b繼續執行

 

退出狀態

echo $? ?查看腳本成不成功

0代表成功,1-255代表失敗

echo $? 的判斷是移最后一條命令的結果為準,成功的話返回值是0,不成功返回值是1-255

返回的值也可以修改 例:exit 10 ?就是將他返回的值改成了10 ,以后返回的特定的值代表特定的內容

 

算術運算

bash中的算術運算 let

例: 賦值 ?a=10 ? ? b=20

let ? c=a+b ? ? ?或 ? ?c=$[a+b] ? ? ? 或 c=((a+b))

可以用 echo $c 查看結果

 

邏輯運算

&與并且and | 或者 or

0&0 =0 假與假 是假

0&1 =0 假與真 是假

1&0 =0 真與假 是假

1&1= 1 真與真 是真

 

0 | 0 = 0 假或假 是假

0 | 1 = 1 假或真 是真

1 | 0 = 1 真或 假 是真

1 | 1 = 1 真或真 是真

短路與 && 短路或 | |

0&&0 =0

0&&1 =0

1&&0 =0

1&&1= 1

chdm1 && chdm2 如果命令1為假 ,命令2 不需要執行 反之命令1為真,需要執行命令2

chdm1 | | chdm2 如果命令1為真,命令2不需要執行 反之命令1為假,命令2不需要執行

 

條件測試

test 判斷表達式是否成立

?qwe=qqq

?asd=www

?test $qwe = $asd

?echo $?

判斷變量qwe和asd變量的值是否相同,相同得0,不同的1到255

或 ??[ ?$qwe = $asd ?]

 

判斷字符串的長度

[ ? -z ? $var ?] ? 判斷var的長度是不是為0,0就是沒有存東西

[ -n $var ] 或 [ $var ] 判斷var是不是非空,0代表非空里面有東西,其他代表空

 

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95957

(0)
周亞飛周亞飛
上一篇 2018-04-14 20:41
下一篇 2018-04-14 21:13

相關推薦

  • linux發行版之間的愛恨情仇

    千絲萬縷,森羅萬象

    Linux筆記 2018-05-13
  • 第六周

    總結

    Linux筆記 2018-05-06
  • DNS服務

    1、相關原理概念
    2、配置主DNS服務器
    3、配置從DNS服務器

    2018-06-03
  • linux網絡相關

    網絡配置 重啟失效 ifconfig 網絡地址顯示,地址配置 ifconfig 接口 IP/netmask [up|down] [-|+]promisc up 打開 down 關閉 -promisc關閉混雜模式 +promisc打開混雜模式,混雜模式用來監聽網絡數據 ifconfig eth0:1 ip/netmask route 路由管理命令 查看路由 -…

    Linux筆記 2018-05-06
  • 腳本相關

    變量 echo $name 與 echo “$name” 假如變量是讀取文件,前者會自動縮進成一行,后者保留原有格式 (umask=022,mkdir /f1)括號相當于開啟一個臨時子進程,能讀取當前shall的變量等信息,但是進程號不變,命令結束后恢復剛才狀態 局部變量,環境變量,只讀變量(常量),位置變量,數組 局部變量:只在當前…

    2018-05-14
欧美性久久久久