20171123 Shell編程

Shell編程的基本知識點

一、shell編程

shell編程就是對一堆Linux命令的邏輯化處理

1. 變量

(1) 定義變量,類如:name=”zhao” ,”=”兩邊不用空格隔開,后面的變量需要使用” “,否則會 ? ? ? ? ? ? ? ? ? ? ? ? ? ?有可能出現錯誤;

shell2

可以使用echo 來顯示變量的值:echo $變量名,類如:

s1

(2)可以使用$來引用系統中已經存在的變量、常量,類如顯示$ PS1:

s2

(3)可以使用命令來當變量,是一種命令調用命令的形式:

s3

(4)同樣的也可以使用文章當作變量

s4

(5)unset 是用來刪除變量的,unset 變量名 ,類如unset $name:

s5

(6)進程的相關知識:

用pstree可以查看當前的進程樹

用echo $$可以查看當前的進程數

(7)

局部變量:生效的范圍為當前的進程,對其他進程包括當前進程的子進程都無效

s6

環境變量(全局變量):生效范圍為當前進程及其子進程都有效

環境變量的定義有兩種:(1)使用export name=VALUE

(2)使用declare -x name=VALUE

export name=”zhao”

declare -x name=”lg”

s7

s8

(8)set 查看系統中所有的變量,函數,用export,declare和env查看系統中的環境變量

(9)只讀模式(常量)只能聲明,但不能修改,其的定義,有兩種:

(1)readonly name=“VALUE”

(2)declare -r name=“VALUE”

s9

使用readonly -p 查看只讀模式

(10)注意點()? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ??sh

2.shell編程

(1)使用程序來查看環境變量:

#!/bin/bash
n=son
echo “p.sh:name=$n” ? ? ? ? ? ? ? ? ? ? ? ? ? ??echo “son=$n”
son.sh

(2)編寫腳本/root/bin/systminfo.sh,顯示出當前主機系統信息:

#!/bin/bash
echo “The informations :
the hostname is:`hostname`
the IPv4 is:`ifconfig ens33|grep -o “[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ?[0-9]\{1,3\}”|head -n1`
the system release is:`cat \/etc\/centos-release`
the banben is :`uname -r`
the CPU is :`lscpu|grep “Model name”|cut -d: -f2`
the neicun is :
`df -h |grep “/dev/sda*”`

(3)編寫腳本/root/bin/backup.sh,可實現每天將/etc/目錄下備份到/root/etcYYYY-mm-dd中:

sh2

(4)編寫腳本/root/bin/disk.sh,顯示當前硬盤分區 中空間利用率最大的值:

#!/bin/bash
df -h |grep sda*|tr -s ” “|cut -d ” ” -f5|sort -n|tail -n1

(5)退出狀態值

0代表成功,1-255代表失敗,也可以通過exit[n]來自己設定值

使用$?來保存最近的命令退出狀態

(6)位置 變量:在腳本的代碼中調用命令行傳遞給腳本的參數

$1代表第一個參數,$2代表第二個參數,$n代表第n個參數

$0:命令本身 , $*代表傳遞給腳本的所有命令

$@:傳遞給腳本的所有參數,每個參數是一個獨立的參數

set清空所有的變量

sh3

(7)新建文件,自動添加文件介紹等內容:

#!/bin/bash
date=`date +%F`
echo “#Filename: $1”
echo “#Revision: 1.0”
echo “#Language: bash shell”
echo “#Author : $2”
echo “#Date : $date”
touch $1
chmod +x $1
vim $1 +

4. ?bash中的算數運算:

(1)bash中支持:+,-,*,/,% ,**等運算

(2)let var=表達式

sh4

(3)$[ 表達式]

sh5

(4)$((表達式))

sh6

(5)expr 是一個命令,所以參數之間需要分開

sh7

(6)echo ?“算數表達式”| bc

sh8

(7)自增自減

++ ? ?— ? ?+= ? ?-+

sh9

 

 

 

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

(0)
zss123456zss123456
上一篇 2017-11-23 16:50
下一篇 2017-11-23 20:45

相關推薦

  • screen命令

    安裝SCREEN[root@centos6 ~]# dfFilesystem     1K-blocks    Used Available Use% Mounted on/dev/sda2       51475068 5052580  43801048  11% /…

    2017-07-22
  • Python

    Python中os和shutil模塊
    csv文件和ini文件簡介

    Linux干貨 2017-10-30
  • iptables基本知識

    1)Linux下的防火墻概念 a、一般談到Linux下的防火墻,我們都會首先想到iptables,其實更確切的叫法應該是Netfilter/iptables,iptables和Netfilter其實是存在差別的。 b、盡管它們經常被用來相互替換使用,Netfilter是用來實現Linux內核中防火墻的Linux內核空間程序代碼段,它要么被直接編譯進內核,要么…

    Linux干貨 2016-07-16
  • 馬哥Linux學習之查詢篇(命令查詢和文件查詢)

        Linux運維工作一般都使用命令完成,在如此多的各種命令中,要想全部記住顯然是不太可能也是不必要的,另外,文件的查找在日常操作中也是必不可少的。下面我就總結一下Linux中如何查找命令以及文件。     命令的運行文件路徑查詢。這個查找的方法是同樣是使用命令,這個命令叫w…

    Linux干貨 2015-04-13
  • 8-4 作業

    1.用正則表達式表示IP地址 2.用正則表達式表示手機號11 13 17 15  18 3.用正則表達式表示身份證號18   4.用正則表達式表示郵箱  

    Linux干貨 2016-08-08
  • Linux入門之計算機組成及其功能

    計算機基礎以及Linux基礎

    2018-03-06
欧美性久久久久