中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

四天精通shell編程(二)

發布時間:2020-03-15 05:43:05 來源:網絡 閱讀:243 作者:280441589 欄目:系統運維

變量

5 位置參數變量


$0命令自己

$1 第一個參數

$2 第二個參數

$9 第九個參數

2:輸出位置參數變量,腳本后要接參數

#!/bin/bash


echo"the command is $0"

echo"canshu1 is $1"

echo"canshu2 is $2"


6 預定義變量


$? 上一個命令的返回值:0 上一個命令正確執行;非0 上一個命令不正確


$# 統計命令之后的參數個數


$* 返回所有參數

$n 位置參數變量

3:輸出預定義變量

#!/bin/bash

#名字為:canshu.sh

echo"canshu zongshu $#"

echo"canshu liebiao: $*"

echo $?

附:

對其賦予執行權限:chmod755 canshu.sh

執行:./canshu.sh2 2 3 4 5 6

7 鍵盤讀取命令

read -p “提示信息” -t 等待時間 變量名


例子4:通過read讀入變量值

#!/bin/bash

read-p "please input num1:" -t 30 test1

read-p "input num2:" -t 30 test2

sum=$(($test1 + $test2))

echo“num1 + num2 = $sum”


8 數值運算

變量值默認都是字符串型,要想進行數值運算。以下三種任選一種


1declare方法

num1=123

num2=456

declare-i sum=$num1+$num2


2)sum=$(($num1 + $num2 )) #推薦

附:

$(): 說明括號里為系統命令,他會執行系統的命令

3)sum=$(expr$num1 + $num2) 注意+左右必須空格,不然會發生錯誤如:打印:123+456#字符串疊加


4)運算符

+ - \* / %取余

附:

shell編程的目的是為了減輕系統管理員的任務

shell腳本可能寫不出漂亮的界面,但是他不是用來干這個的→ 各種編程語言都有他特殊的應用面,比如說C語言就比VB在數值計算方面更加精確,而VB則在界面方面比C更勝一籌

shutdown-r now #系統重啟

shell中常用命令


1 行提取命令grep

選項: -v 反向選擇

-n 提取時,顯示行號


舉例:

grep "[^a-z]hen" test.txt

oo前不是小寫字母的行匹配。 注意:和開頭沒有關系

附:也可以結合以前的內容:grep-n "[^a-z]hen" test_rule.txt

中括號代表一個字母,^代表取反,a-z代表小寫字母az


grep “\.$” test.txt

匹配以.結尾的行

附:在正則表達式中$代表行尾;

\ 代表轉義符,表示,將其后緊跟字符的特殊含義消失!

Linux中行尾的空格附,也可以作為一個字符,一定要記住!這是一些腳本發生錯誤的原因!

grep "^[^A-Za-z]" test.txt

匹配不以字母開頭的行 注意:所有字母不能這樣寫 A-z

附:

^在中括號外面代表行首

grep"^[^a-zA-Z]" test_rule.txt #這樣也可以


grep “^$” test.txt

匹配空白行


grep "oo*" test.txt

匹配最少一個o

附:o*代表著*前面的這個o可以重復0到無數多次

還可以這樣用:grep"hh*o" test_rule.txt

這樣: grep"ooo" test_rule.txt


2 列提取命令


1 cut


cut -d “分隔符” -f 提取列 文件名

如:cut-d ":" -f 1,3 /etc/passwd


more/etc/passwd | grep "/bin/bash" | cut -d ":" -f1,3

提取passwd文件中可以登錄的用戶的用戶名和UID

附:這里13之后就不用加文件名了

last 命令用于查看那個用戶,在那個端口等信息下登錄到系統,是一個日志命令


2 awk


awk '條件{動作}'

last| awk '{printf $1 "\t" $3 "\n"}' # $1代表第一列

提取last顯示結果的第一和第三列

\t tab

\n 換行

\r 回車

附:也可以是:last| awk '{printf $1 "\t" $3 "\t" $4 "\n"}'


last| grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"| awk '{printf $1 "\t" $3 "\n"}'

last中提取包含ip的行,然后,再在行中提取第一和第三列



awk內置變量 FS 指定分隔符

more/etc/passwd | awk 'BEGIN {FS=":"} {printf $1 "\t"$3 "\n"}'

讀取passwd文件,以":"為分隔符,截取第一和第三列

BEGIN 在截取前使分隔符生效。如果沒有BEGIN,那么第一行自定義的分隔符不生效


6 echo命令

echo -e “輸出內容”

-e 識別格式化打印內容


echo -e “1\t2\t3” 打印tab


echo -e "\e[1;31m this is red text \e[0m" 輸出紅色字體

\e[ 格式標志

1;31m 指定顏色 #3039之間的數字

0m 恢復顏色(重置)

附:30m=黑色,31m=紅色,32m=綠色,33m=×××,34m=藍色,35m=洋紅, 36m=青色,37=白色


echo -e “\e[1;42 background \e[0m”

附:背景顏色:40=黑色,41=紅色,42=綠色,43=×××,44=藍色,45=洋紅, 46=青色,47=白色


例子5echo輸出的小游戲

注: cat -A 文件名 顯示文件隱,包括藏字符

取消dos文檔的回車符,兩種辦法


1dos2unix 文檔名 #unix2dos 方向相反


2vi -b 文檔

:%s/^M//g ^M使用 ctrl+v+m 輸入


6:數據備份

#!/bin/bash

DAY=`date+%Y%m%d` # 反引號!!!

#定義日期變量

附:DAT=$(date+%F) # 更方便且更漂亮,打印出:2013-12-21

SIZE=`du-sh /var/lib/mysql`

#定義mysql目錄大小的變量,``符號可以換成$()

附:sudodu -sh /etc/ # 統計/etc/目錄的大小

echo"Date: $DAY" >> /tmp/dbinfo.txt

#把日期輸入信息文檔

echo"Data Size: $SIZE" >> /tmp/dbinfo.txt

#把大小輸入信息文檔

cd/opt/dbbak

#切換目錄

tarzcf mysqlbak-${DAY}.tar.gz /var/lib/mysql /tmp/dbinfo.txt

打包備份mysql目錄,同時打包信息文檔

附:在字母zc后加v會顯示壓縮過程

rm-f /tmp/dbinfo.txt












向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昌宁县| 巫山县| 南丹县| 富宁县| 虎林市| 西安市| 承德市| 寻甸| 弥勒县| 孟连| 黄梅县| 溧阳市| 扎鲁特旗| 江源县| 阿瓦提县| 南丹县| 伊金霍洛旗| 定结县| 广安市| 石景山区| 林州市| 珲春市| 花莲县| 襄城县| 望谟县| 河津市| 穆棱市| 南宫市| 卢氏县| 西畴县| 澳门| 勐海县| 堆龙德庆县| 如东县| 原平市| 怀仁县| 平乡县| 巴马| 岱山县| 宜都市| 巩义市|