最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
理論+實(shí)操:shell編程規(guī)范與變量————理論講解,新手必看-創(chuàng)新互聯(lián)

-[TOC]

成都創(chuàng)新互聯(lián)憑借在網(wǎng)站建設(shè)、網(wǎng)站推廣領(lǐng)域領(lǐng)先的技術(shù)能力和多年的行業(yè)經(jīng)驗(yàn),為客戶提供超值的營(yíng)銷型網(wǎng)站建設(shè)服務(wù),我們始終認(rèn)為:好的營(yíng)銷型網(wǎng)站就是好的業(yè)務(wù)員。我們已成功為企業(yè)單位、個(gè)人等客戶提供了網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作服務(wù),以良好的商業(yè)信譽(yù),完善的服務(wù)及深厚的技術(shù)力量處于同行領(lǐng)先地位。

第一章 shell編程規(guī)范與變量————理論講解

前言:

  • shell腳本編程規(guī)范
    • shell腳本應(yīng)用場(chǎng)景
    • shell編程規(guī)范
    • 管道與重定向
  • shell腳本變量揭秘
    • 自定義變量
    • 特殊變量

本次學(xué)習(xí)了解的是變量

語(yǔ)言分為兩大類

1.強(qiáng)語(yǔ)言:定義變量的時(shí)候需要聲明數(shù)據(jù)類型,一旦聲明,就不可變 jave c語(yǔ)言

1整型 init 1 2 3 100

長(zhǎng)整型 long

2浮點(diǎn)型 單精度 float 4字節(jié)

   雙精度  double   8字節(jié)

帶小數(shù)點(diǎn)就是浮點(diǎn)型

3.string 字符串

char 字符 英文字母字符 a 占一個(gè)字節(jié)

? 中文漢字字符,男 占兩個(gè)字節(jié)

而在java中,所有字符都占兩個(gè)字節(jié)

4 boolean 布爾值 ture 和false

5 date 日期

int a=10; a

弱語(yǔ)言 :shell javascript python 不需要聲明

a=10;

a=10.1;

給a賦予任意含義,都可以

html 標(biāo)記語(yǔ)言 以標(biāo)簽形式存在,

xml文件格式

json 鍵:值 key:value a:10;

shell 優(yōu)點(diǎn):

? 變量直接定義,不需要聲明,沒(méi)有面向?qū)ο笏枷?,所有的語(yǔ)言編寫?yīng)q如記流水賬

數(shù)組 函數(shù)

一 : shell腳本概述

1.1 shell腳本的概念

  • 將要執(zhí)行的命令按照順序保存到一個(gè)文本文件
  • 給該文件可執(zhí)行的權(quán)限,便于運(yùn)行 +一個(gè)x的執(zhí)行權(quán)限
  • 可結(jié)合各種shell控制語(yǔ)句以完成更復(fù)雜的操作

1.2 shell腳本應(yīng)用場(chǎng)景

  • 重復(fù)性操作
  • 批量化事務(wù)處理
  • 自動(dòng)化運(yùn)維管理
  • 服務(wù)器運(yùn)行狀態(tài)監(jiān)控
  • 定時(shí)任務(wù)執(zhí)行
  • ······

首先要先把命令記熟,和語(yǔ)句

二 : shell的作用

2.1 shell的作用——命令解釋器,“翻譯官”

  • 介于系統(tǒng)內(nèi)核與用戶之間,負(fù)責(zé)解釋命令行
    理論+實(shí)操 :shell編程規(guī)范與變量————理論講解,新手必看

2.2 用戶的登陸shell

  • 登陸后默認(rèn)使用的shell程序,一般為/bin/bash
  • 不同shell的內(nèi)部命令、運(yùn)行環(huán)境等會(huì)有所區(qū)別
[root@localhost ~]# cat /etc/shells
/bin/sh
'/bin/bash'
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
[root@localhost ~]# 

三 :編寫第一個(gè)shell腳本

3.1 編寫腳本代碼

  • 使用vi文本編輯器
  • 每行一條Linux命令,按執(zhí)行順序依次編寫
t@localhost ~]# vi frist.sh
#!/bin/bash  'shell腳本固有格式'
cd /boot/
pwd
ls -lh vml*
[root@localhost ~]# chmod 744 frist.sh 
[root@localhost ~]# ./frist.sh 
/boot
-rwxr-xr-x. 1 root root 5.7M 10月 23 13:40 vmlinuz-0-rescue-33c124456fa34c50a98483245dfea58d
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64

;表示一句話的結(jié)束,可以使用分號(hào)同時(shí)使用兩條命令

[root@localhost boot]# ls;who       ‘命令用分號(hào)隔開(kāi)可以同時(shí)執(zhí)行兩個(gè)命令’
config-3.10.0-693.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-33c124456fa34c50a98483245dfea58d.img
initramfs-3.10.0-693.el7.x86_64.img
initrd-plymouth.img
symvers-3.10.0-693.el7.x86_64.gz
System.map-3.10.0-693.el7.x86_64
vmlinuz-0-rescue-33c124456fa34c50a98483245dfea58d
vmlinuz-3.10.0-693.el7.x86_64
root     :0           2019-11-25 13:43 (:0)
root     pts/0        2019-11-25 17:06 (:0)

3.2 執(zhí)行腳本文件 ./

  • 方法一:腳本文件路徑(絕對(duì)路徑與相對(duì)路徑)
[root@localhost ~]# ./frist.sh
  • 方法二: sh 腳本文件路徑
[root@localhost ~]# sh frist.sh 
/boot
-rwxr-xr-x. 1 root root 5.7M 10月 23 13:40 vmlinuz-0-rescue-33c124456fa34c50a98483245dfea58d
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64
[root@localhost ~]#
  • 方法三 : source 腳本文件路徑
[root@localhost ~]# source frist.sh 
/boot
-rwxr-xr-x. 1 root root 5.7M 10月 23 13:40 vmlinuz-0-rescue-33c124456fa34c50a98483245dfea58d
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64
[root@localhost boot]#

./ 此方法的文件必須要有執(zhí)行x權(quán)限

sh 執(zhí)行 ,當(dāng)前路徑無(wú)變化

source 執(zhí)行,當(dāng)前路徑有變化

3.3 更完善的腳本構(gòu)成

  • 腳本聲明
  • 注釋信息
  • 可執(zhí)行語(yǔ)句
[root@localhost ~]# vim frist.sh 
#!/bin/bash
#this is my frist shell-script.
cd /boot/
echo “當(dāng)前的目錄位于:”     '輸出友好提示信息'
pwd
echo “其中以vml開(kāi)頭的文件包括:”
ls -lh vml*
~

echo 代表輸出語(yǔ)句,輸出字符串用雙引號(hào)

[root@localhost ~]# ./frist.sh 
當(dāng)前的目錄位于:
/boot
其中以vml開(kāi)頭的文件包括:
-rwxr-xr-x. 1 root root 5.7M 10月 23 13:40 vmlinuz-0-rescue-33c124456fa34c50a98483245dfea58d
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64

四 : 重定向與管道操作

4.1 交互式硬件設(shè)備 0 1 2

  • 標(biāo)準(zhǔn)輸入:從該設(shè)備接受用戶輸入的數(shù)據(jù)
  • 標(biāo)準(zhǔn)輸出:通過(guò)該設(shè)備向用戶輸出數(shù)據(jù)
  • 標(biāo)準(zhǔn)錯(cuò)誤:通過(guò)該設(shè)備報(bào)告執(zhí)行出錯(cuò)信息

理論+實(shí)操 :shell編程規(guī)范與變量————理論講解,新手必看

4.2 重定向操作 >

理論+實(shí)操 :shell編程規(guī)范與變量————理論講解,新手必看

重定向符號(hào)可以用來(lái)寫日志文件

[root@localhost ~]# chattr +i /etc/passwd   '給賬號(hào)文件加鎖'
[root@localhost ~]# lsattr /etc/passwd      '查看已枷鎖'
----i----------- /etc/passwd
[root@localhost ~]# useradd zhaoyun         '測(cè)試'
useradd:無(wú)法打開(kāi) /etc/passwd        '標(biāo)準(zhǔn)錯(cuò)誤輸出'
[root@localhost ~]# useradd zhaoyun 2> err.txt      '使用2>重定向'
[root@localhost ~]# ls
anaconda-ks.cfg  frist.sh              test.sh  模板  圖片  下載  桌面
err.txt          initial-setup-ks.cfg  公共     視頻  文檔  音樂(lè)
[root@localhost ~]# cat err.txt '查看'
useradd:無(wú)法打開(kāi) /etc/passwd

4.3 管道操作符號(hào)“|”

  • 將左側(cè)的命令輸出結(jié)果,作為右側(cè)命令的處理對(duì)象
'cmd1 | cmd2 [... | cmdn]
[root@localhost ~]# grep "bash$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
gsy:x:1000:1000:gsy:/home/gsy:/bin/bash
[root@localhost ~]# grep "bash$" /etc/passwd | awk -F: '{print $1,$7}'
root /bin/bash
gsy /bin/bash
[root@localhost ~]#

正則表達(dá)式三劍客

grep egrep 老大 過(guò)濾關(guān)鍵字

sed 老二 按行讀取

awk 老三 按列讀取數(shù)據(jù)

awk -F 指定分隔符 如果不加-F,則默認(rèn)分隔符為制表符或空格

'{print 打印 $1 第一個(gè)參數(shù) $7 第七個(gè)參數(shù)}'

$1 $2 代表位置變量

[root@localhost ~]# df -Th
文件系統(tǒng)                類型      容量  已用  可用 已用% 掛載點(diǎn)
/dev/mapper/centos-root xfs        20G  7.6G   13G   38% /
devtmpfs                devtmpfs  977M     0  977M    0% /dev
tmpfs                   tmpfs     993M     0  993M    0% /dev/shm
tmpfs                   tmpfs     993M  9.0M  984M    1% /run
tmpfs                   tmpfs     993M     0  993M    0% /sys/fs/cgroup
/dev/sda1               xfs       6.0G  161M  5.9G    3% /boot
/dev/mapper/centos-home xfs        10G   37M   10G    1% /home
tmpfs                   tmpfs     199M   20K  199M    1% /run/user/0
/dev/sr0                iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64

[root@localhost ~]# df -Th | awk '{print $1,$2,$6}'
文件系統(tǒng) 類型 已用%
/dev/mapper/centos-root xfs 38%
devtmpfs devtmpfs 0%
tmpfs tmpfs 0%
tmpfs tmpfs 1%
tmpfs tmpfs 0%
/dev/sda1 xfs 3%
/dev/mapper/centos-home xfs 1%
tmpfs tmpfs 1%
/dev/sr0 iso9660 100%

五 : shell變量的作用、類型

5.1 變量的作用

  • 為靈活管理limux系統(tǒng)提供特定參數(shù),有兩層意思
    • 變量名:使用固定的名稱,由系統(tǒng)預(yù)設(shè)或用戶定義
    • 變量值:能夠根據(jù)用戶設(shè)置、系統(tǒng)環(huán)境的變化而變化
  • 變量的類型
    • 自定義變量:由用戶自己定義、修改和使用
    • 環(huán)境變量:由系統(tǒng)維護(hù),用于設(shè)置工作環(huán)境
    • 位置變量:通過(guò)命令行給腳本程序傳遞參數(shù)
    • 預(yù)定義變量:Bash中內(nèi)置的一類變量,不能直接修改

5.2 定義一個(gè)新的變量——自定義變量 = echo

  • 變量名以字幕或下劃線開(kāi)頭,區(qū)分大小寫,建議全大寫

    • 變量名=變量值
  • 查看變量的值

  • echo $變量名
[root@localhost ~]# addr=192.168.100.100
[root@localhost ~]# echo $addr
192.168.100.100
[root@localhost ~]# addr=10
[root@localhost ~]# echo $addr
10
[root@localhost ~]# num=$addr
[root@localhost ~]# addr=20
[root@localhost ~]# echo $addr $num
20 10
[root@localhost ~]# product=puthon
[root@localhost ~]# version=3.7
[root@localhost ~]# echo $product $version
puthon 3.7
[root@localhost ~]# echo $product2.8    ’當(dāng)變量名與數(shù)字連起來(lái)時(shí),則不顯示‘
.8
[root@localhost ~]# echo $product 2.8
puthon 2.8
[root@localhost ~]# 
[root@localhost ~]# echo ${product}2.8  '想要的出來(lái)的結(jié)果與數(shù)字連在一起,就需要用上{}符號(hào)'
puthon2.8

=號(hào)是賦值符號(hào),把右邊的值賦予給左邊的值

addr="192.168.100.100";

_abc="hello";

變量開(kāi)頭不可以以數(shù)字和漢字為開(kāi)頭,只可以為字母或者下劃線

java的命名方法叫字下美人數(shù)駱駝

駱駝是駱駝命名法

輸出時(shí),要把變量前面加$符號(hào)

變量賦值相當(dāng)于在內(nèi)存中開(kāi)辟了一個(gè)存儲(chǔ)空間,把賦予的值放在空間內(nèi)

5.3 賦值時(shí)使用引號(hào)

  • 雙引號(hào):允許通過(guò)$符號(hào)引用其他變量值,即在可以代表字符串的情況下,若是有$存在也可以代表標(biāo)量
  • 單引號(hào):禁止引用其他變量值,$是為普通字符,即視為字符串,不識(shí)別變量符號(hào)
  • 反撇號(hào):命令替換,提取命令執(zhí)行后的輸出結(jié)果
  • 變量=反撇號(hào) 相當(dāng)于變量=$()
[root@localhost ~]# ps aux |wc -l
204
[root@localhost ~]# num=`ps aux | wc -l`
[root@localhost ~]# echo $num
203
[root@localhost ~]# abc=$(ps aux | wc -l)
[root@localhost ~]# echo $abc
203

請(qǐng)輸入你想管理的服務(wù) 如何管理你的服務(wù)(選項(xiàng):start,status,stop)

5.4 從鍵盤輸入內(nèi)容為變量賦值 read

  • read [-p 提示信息] 變量名
[root@localhost ~]# vim demo.txt

#!/bin/bash
#this is test
read -p "請(qǐng)輸入一個(gè)整數(shù):" score
echo "你的成績(jī)?yōu)?score"
[root@localhost ~]# sh demo.txt 
請(qǐng)輸入一個(gè)整數(shù):996
你的成績(jī)?yōu)?96

~

從控制臺(tái)的輸入和輸出

java的操作

理論+實(shí)操 :shell編程規(guī)范與變量————理論講解,新手必看

5.5 設(shè)置變量的作用范圍 export 設(shè)置全局可用

  • 格式1:export 變量名
  • 格式2:export 變量名=變量值
  • 兩種格式可以混合使用

export可以把變量定義為全局變量,這樣的話,不管是切換bash環(huán)境,還是切換用戶都可以使用該變量

[root@localhost ~]# echo $abc
203
[root@localhost ~]# bash
[root@localhost ~]# echo $abc

[root@localhost ~]# exit
exit
[root@localhost ~]# echo $abc
203
[root@localhost ~]# export $abc     '只識(shí)別變量名'
bash: export: `203': 不是有效的標(biāo)識(shí)符
[root@localhost ~]# export abc
[root@localhost ~]# bash
[root@localhost ~]# echo $abc
203
[root@localhost ~]# exit
exit
[root@localhost ~]# 

5.6 整數(shù)變量的運(yùn)算 expr

  • expr 變量1 運(yùn)算符 變量2 [運(yùn)算符 變量3].。。。。。
  • 常用運(yùn)算符
    • 加法運(yùn)算:+
    • 減法運(yùn)算:-
    • 乘法運(yùn)算:* 乘法必須要加\,因?yàn)樵趕hell語(yǔ)言中,*代表通配符號(hào)
    • 除法運(yùn)算:/
    • 求模(取余)運(yùn)算:%
[root@localhost ~]# expr 3 + 2
5
[root@localhost ~]# expr 9 - 10
-1
[root@localhost ~]# expr 9 / 10
0
[root@localhost ~]# expr 10 / 9
1
[root@localhost ~]# expr 10 / 8
1
[root@localhost ~]# expr 6 / 3
2
[root@localhost ~]# exp
6
[root@localhost ~]# exp
expr: 語(yǔ)法錯(cuò)誤
[root@localhost ~]# expr 39 % 5
4
[root@localhost ~]# echo $(expr 3 + 3)
6
[root@localhost ~]# sum='expr 3 + 3'    '單引號(hào)'
[root@localhost ~]# echo $sum
expr 3 + 3
[root@localhost ~]# sum=`expr 3 + 3`    '反撇號(hào)'
[root@localhost ~]# echo $sum
6

六 : 特殊的shell變量

6.1 環(huán)境變量

  • 由系統(tǒng)提前創(chuàng)建,用來(lái)設(shè)置用戶的工作環(huán)境
  • 配置文件: /etc/profile、~/.bash_prolile

6.2 常見(jiàn)的環(huán)境變量

  • PWD\、PATH
  • USER、SHELL、HOME
[root@localhost ~]# vim /etc/profile
MAIL="/var/spool/mail/$USER"
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

[root@localhost ~]# echo $MAIL
/var/spool/mail/root
[root@localhost ~]# echo $HOSTNAME
localhost.localdomain

[root@localhost ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin
[root@localhost ~]# PATH="$PATH:/root"
[root@localhost ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin:/root

:加環(huán)境變量

6.3 位置變量

  • 表示為$n,n為1~9之間的數(shù)字

  • [root@localhost ~]# ./myprog.sh 'one' two three four five 'six'
                                '$1,第一個(gè)位置參數(shù)'          '$6,第六位置參數(shù)'
[root@localhost ~]# vim demo.sh
sum=0
sum=`expr $1 + $2`
echo "總和為$sum"
echo "執(zhí)行的腳本是$0"
echo "參數(shù)的個(gè)數(shù)是$#"
echo "詳細(xì)內(nèi)容是$*"
cho "執(zhí)行成功$?"
[root@localhost ~]# sh demo.sh 70 80
總和為150
執(zhí)行的腳本是demo.sh
參數(shù)的個(gè)數(shù)是2
詳細(xì)內(nèi)容是70 80
執(zhí)行成功0

統(tǒng)計(jì)是$#,

除此之外還有$? 是否執(zhí)行成功,成功是0,不成功是非0值

詳細(xì)內(nèi)容是$*

6.4 預(yù)定義變量

  • $#:命令行中位置變量的個(gè)數(shù)
  • $*:所有位置變量的內(nèi)容
  • $?:上一條命令執(zhí)行后返回的狀態(tài),當(dāng)返回狀態(tài)值為0時(shí)表示執(zhí)行正常,非0值表示執(zhí)行異?;虺鲥e(cuò)
  • $0:當(dāng)前執(zhí)行的進(jìn)程/程序名

理論+實(shí)操 :shell編程規(guī)范與變量————理論講解,新手必看

/dev/null 類似一個(gè)擁有無(wú)限容量的目錄,所有不用的文件都可以放到里面,一旦放進(jìn)去,無(wú)法找回,慎用

跟/dev/null類似的還有/dev/zero,一個(gè)擁有無(wú)限大的文件,兩個(gè)都做測(cè)試使用

總結(jié)

  • 重定向與管道操作
  • 自定義變量的定義、查看、引用、賦值、作用范圍
  • 數(shù)值變量的運(yùn)算
  • 環(huán)境變量、位置變量、預(yù)定義變量的作用與用途

實(shí)驗(yàn)

實(shí)驗(yàn)環(huán)境

  • 為了集中查看linux服務(wù)器各方面的運(yùn)行情況,管理員(root)希望定制自己的登陸環(huán)境,以便自動(dòng)顯示監(jiān)控信息。另外,通過(guò)編寫簡(jiǎn)單的shell腳本,熟悉Linux自動(dòng)化管理的基本途徑

需求描述

  • 編寫登陸歡迎腳本welcome.sh
  • 編寫服務(wù)控制腳本實(shí)現(xiàn)start、stop、status 功能
#!/bin/bash
username=`whoami`
percent=20
echo "====歡迎你, $username===="
echo "以下分區(qū)使用率超過(guò)$percent%"
df -Th  | awk -v percent=$percent 'BEGIN {NR!=1} {if ($6 > percent){print $7"\t"$6} }'

[root@localhost bash]# echo "/root/bash/welcome.sh" >> /root/.bashrc
[root@localhost bash]# su - root
Last login: Mon Nov 25 18:44:16 GMT 2019 on pts/2
====歡迎你, root====
以下分區(qū)使用率超過(guò)20%
Mounted Use%
/ 25%
/boot 33%

然后把這個(gè)腳本的絕對(duì)路徑寫入到~/.bashrc中即可

#!/bin/bash
#this is zuoye
systemctl stop firewall.sevrice
setenforce 0
read -p "請(qǐng)輸入你想管理的服務(wù):" score
read -p "如何管理你的服務(wù)(選項(xiàng):start,status,stop)" scorea
systemctl $scorea $score
echo "systemctl $scorea $score"

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


網(wǎng)站題目:理論+實(shí)操:shell編程規(guī)范與變量————理論講解,新手必看-創(chuàng)新互聯(lián)
文章來(lái)源:http://fisionsoft.com.cn/article/goosj.html