1. 程式人生 > 其它 >shell for 0開始_Shell基礎入門

shell for 0開始_Shell基礎入門

技術標籤:shell for 0開始shell grep 變數shell if 非shell 字串替換shell 字串轉數字shell 替換字串

53a9511e54e83b66e0b31a188c76cdd4.png

Shell 實現的功能

1)手動安裝作業系統2)初始化作業系統3)安裝服務4)服務啟動systemd5)shell進行程式碼上線6)監控zabbix cacti網絡卡 Nagios監控硬體交換機路由器7)日誌分析

必備基礎

1.熟練使用vim編輯器2.熟悉ssh終端3.熟練使用linux基礎命令4.熟練使用四劍客

基礎命令參考連結

linux常用命令

Linux重要命令合集

shell 知識點

變數基礎  條件表示式  if判斷  for迴圈  while迴圈  utile迴圈    continue    break      exit  case語句  陣列看懂別人的指令碼 掌握常見語法 重複練習要有程式設計思維找合適的教材(專案多)

Shell入門

1)什麼是Shell
Shell是一個命令直譯器,作用解釋使用者輸入的命令以及程式。

2)什麼是Shell指令碼
把命令統一在放一個檔案中進行執行,稱為Shell指令碼。
Shell指令碼包含若干個命令+IF判斷+FOR迴圈+變數+陣列等等

hello,world

[[email protected] /server/scripts ]# vim test.sh#!/bin/sh                #直譯器#Authorajie             #作者#print hello word        #目的echo "hello,word!"

如何執行指令碼

sh test.sh chmod +x test.sh./test.sh/server/scritps/test.sh source test.sh . test.sh cat test.sh|bashbash < test.sh

變數

變數的生存週期

永久的 需要修改環境變數配置檔案 變數永久生效 /etc/profile臨時的 直接使用export宣告變數即可,關閉shell則變數失效 不加export 則只對當前的shell生效加export   則對當前開啟視窗所有的shell生效

環境變數配置檔案生效的順序

/etc/profile     .bash_profile .bashrc         /etc/bashrc

自定義環境變數

變數名=變數值獲取值$變數名

[[email protected] ~ ]# name=ajie[[email protected] ~ ]# echo $nameajie

變數值的定義

數字變數內容定義age=18 字串定義boy='I am  teacher' 預設是雙引號 混合字串必須加雙引號 數字 字串 變數

單引號和雙引號的區別

單引號: 所見即所得 吃什麼吐什麼 定義的什麼值輸出或者呼叫的就是什麼值 不會解析變數 雙引號:可以解析變數

命令的定義方式

test=`pwd`test=$(pwd)

Shell特殊位置重要變數

配合echo使用

$0  獲取當前Shell指令碼的檔名  如果指令碼全路徑執行則顯示全路徑 basename 只獲取指令碼名稱$n  獲取當前指令碼的第n個引數,n為0則是指令碼名稱,從$1開始代表指令碼的第一個引數  $9以後需要加{} ${10}$#  獲取shell指令碼所有傳參的總個數$*  獲取shell指令碼所有傳參的引數,如果不加雙引號則和[email protected]相同,在迴圈語句中如果加上雙引號,則表示將所有的引數視為單個字串[email protected]  獲取shell指令碼所有傳參的引數,如果不加雙引號則和$*相同,在迴圈語句中如果加上雙引號,則表示將所有的引數視為獨立字串$?  獲取執行上一條命令的執行狀態結果,返回值0為成功 非0失敗$$  獲取當前指令碼的PID$!  獲取上一個後臺工作指令碼進行的PID$_  獲取指令碼最後的一個引數 類似於ESC .

指令碼的傳參

直接傳參

[[email protected] /server/scripts ]# cat test.sh #!/bin/bash#Author:ajie#FileName:test.shping -c1 -W1 $1 &>/dev/null[ $? -eq 0 ] && echo "ping is ok" || echo "ping is error"[[email protected] /server/scripts ]# sh test.sh baidu.comping is ok[[email protected] /server/scripts ]# sh test.sh baiduuuuuuuuu.comping is error

變數賦值

[[email protected] /server/scripts ]# cat test.sh #!/bin/bash#Author:ajie#FileName:test.shurl=$1ping -c1 -W1 $url &>/dev/null[ $? -eq 0 ] && echo "ping is ok" || echo "ping is error"

read讀入

[[email protected] /server/scripts ]# cat test.sh #!/bin/bash#Author:ajie#FileName:test.shread -p "check your url: " urlping -c1 -W1 $url &>/dev/null[ $? -eq 0 ] && echo "ping is ok" || echo "ping is error"[[email protected] /server/scripts ]# sh test.sh check your url: lvxinjie.cnping is ok

變數的子串

子串切片
name="I am shuaiguo"
取出am 三種方式取值

echo $name|awk '{print $2}'am echo $name|cut -c 3-4am echo ${name:2:2}am

如何統計變數內的長度

echo $name|wc -L13 echo ${#name}13 echo $name|awk '{print length}'13 expr length "$name"13

變數的刪除和替換

url=www.sina.com.cn 方法1sed -r 's#www.(.*)#\1#'方法2echo www.sina.com.cn|grep 's.*$' -o方法3echo $url|sed 's#www.##g'方法4echo ${url:4}方法5 切碎組合echo $url|cut -d "." -f2方法6 變數刪除[[email protected] ~]# echo $urlwww.sina.com.cn[[email protected] ~]# echo ${url#*.}sina.com.cn[[email protected] ~]# echo ${url#*.*.}com.cn[[email protected] ~]# echo ${url#*.*.*.}cn [[email protected] ~]# echo ${url}www.sina.com.cn[[email protected] ~]# echo ${url#*s}ina.com.cn[[email protected] ~]# echo ${url}   www.sina.com.cn[[email protected] ~]# echo ${url#*c}om.cn[[email protected] ~]# echo ${url##*c}n [[email protected] ~]# echo ${url}www.sina.com.cn[[email protected] ~]# echo ${url%.*}www.sina.com[[email protected] ~]# echo ${url%.*.*}www.sina[[email protected] ~]# echo ${url%%.*} www [[email protected] ~]# echo $urlwww.sina.com.cn[[email protected] ~]# echo $url|sed 's#sina#baidu#g'www.baidu.com.cn[[email protected] ~]# echo ${url/sina/baidu}www.baidu.com.cn[[email protected] ~]# echo ${url}www.sina.com.cn[[email protected] ~]# echo ${url/w/a}aww.sina.com.cn[[email protected] ~]# echo ${url//w/a}aaa.sina.com.cn

小結:

變數從前往後刪除 # 貪婪匹配 ##變數從後往前刪除 % 貪婪匹配 %%變數內容替換 // 貪婪匹配 ///