色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux從零到精通:最簡單的Shell腳本入門教程

馬哥Linux運維 ? 來源:運維基地 ? 2024-12-05 09:56 ? 次閱讀

在數字化時代的浪潮中,Linux操作系統憑借其高效、穩定、開源的特性,成為了無數開發者和系統管理員的首選。

而在Linux的龐大生態系統中,Shell編程無疑是連接用戶與系統內核的橋梁,它讓我們能夠通過簡單的命令和腳本,實現對系統的靈活控制和自動化管理。

shell腳本前言

shell腳本入門

shell變量基礎

shell變量子串

shell數值運算

條件表達式

流程控制語句

shell函數

case語句

shell變量數組

shell腳本前言

|為什么學習shell編程

Shell腳本語言是實現Linux/UNIX系統管理及自動化運維所必備的重要工具,Linux/UNIX系統的底層及基礎應用軟件的核心大部分涉及Shell腳本的內容

每一個合格的Linux系統管理員或運維工程師,都需要熟練的編寫Shell腳本語言,并能夠閱讀系統及各類軟件附帶的Shell腳本內容

只有這樣才能提升運維人員的工作效率,適應日益復雜的工作環境,減少不必要的重復工作,從而為個人的職場發展奠定較好的基礎

| 學好Shell編程所需的基礎知識

能夠熟練使用vim編輯器,熟悉SSH終端

有一定的Linux命令基礎,至少需要掌握80個以上Linux常用命令,并能夠熟練使用它。

要熟練掌握Linux正則表達式及三劍客命令(grep,sed,awk)

| 如何學好Shel編程

學好Shel編程的核心:多練-->多思考-->再練-->再思考,堅持如此循環即可!

新手大忌:不可拿來主義,可以模仿,但是要自己嚼爛了吃下去。

格言:你覺得會了并不一定會了,你認為對的并不一定對的。

大家要勤動手,自行完成學習筆記和代碼的書寫。

shell腳本入門

|shell是什么?

Shell是一個命令解釋器,它在操作系統的最外層,負責直接與用戶對話,把用戶的輸入解釋給操作系統,并處理各種各樣的操作系統的輸出結果,輸出屏幕返回給用戶

這種對話方式可以是:

交互的方式:從鍵盤輸入命令,通過/bin/bash的解釋器,可以立即得到shell的回應

非交互的方式:腳本

|Shell能做什么?

安裝操作系統:CentOS6.X和CentOS7.X 手動方式安裝或克隆方式自動化安裝:cobbler、kickstart 底層都是shell腳本實現

優化 SSH:關閉Selinux 優化防火墻,放行 80、443、SSH端口、zabbix監控等服務訪問端口 個人需求:加大文件描述符、時間同步、硬件時間、軟件時間、YUM源等,都可以寫入shell腳本

安裝服務 Nginx、Apache Tomcat、PHP、MySQL、Redis、Mongo、docker等例如:PHP5.4和PHP7.1寫入shell腳本,實現自動化安裝不同版本的服務

代碼上線:shell腳本自動化發布自動化回滾

zabbix監控:硬件、軟件、進程、端口號、自定義監控都可以通過shell腳本+定時任務完成

日志分析日志統計:命令三劍客+定時任務+shell腳本來實現在ELK集群上的日志展示

業務層面

輔助開發程序:nohup和python的大量的日志處理

| 如何Shell編程

重點掌握前面的內容:變量、判斷、bash,對它們徹底理解

先看懂,讀懂shell腳本

講完判斷,將前面學過的腳本進行完善

自己寫簡單的腳本,如一些小的項目:生活中:隨機點餐、大保健、會員辦理,消費、服務 對應價格不同 結賬 會員賬號 密碼 密碼丟失

有基本適合自己的教材,如:跟老男孩學習Shell編程或者完善的文檔

不能拿來及用,要搞懂、變成自己的,吸收了后可以解決企業中大部分的shell問題

一個shell腳本

# cat test.sh

#!/bin/bash

echo "Hello World!"

| 執行腳本的三種常用的方式

(1)使用bash或者sh通過解釋器執行腳本 在子shell中執行命令

# sh test.sh

Hello World!

# bash test.sh

Hello World!

(2)使用路徑方式

全路徑執行方式或者當前路徑,必須給x權限

# chmod +x test.sh

# /server/scripts/test.sh

Hello World!

# ./test.sh

Hello World!

(3)使用source或者 . 的方式

# . test.sh

Hello World!

# source test.sh

Hello World!

(4)其他shell的執行方式

# cat test.sh | bash

Hello World!

# echo ls | bash

test.sh

# bash < test.sh

Hello World!

shell變量基礎

| 什么是變量

shell變量是一種很“弱”的變量,默認情況下,一個變量保存一個串,shell不關心這個串是什么含義,所以若要進行數學運算,必須使用一些命令例如let、declare、expr、雙括號等。

shell變量可分為兩類:局部變量和環境變量

局部變量只在創建它們的shell中可用

環境變量則可以在創建它們的shell及其派生出來的任意子進程中使用

有些變量是用戶創建的,其他的則是專用shell變量

變量名必須以字母或下劃線字符開頭,其余的字符可以是字母、數字(0~9)或下劃線字符

變量名字是大小寫敏感的,環境變量推薦設置為字母大寫

給變量賦值時,等號周圍不能有任何空白符,為了給變量賦空值,可以在等號后跟一個換行符

變量刪除:用set命令可以查看所有的變量,unset var命令可以清除變量var,var相當于沒有定義過

變量只讀:readonly var可以把var變為只讀變量,定義之后不能對var進行任何更改

對shell變量的引用方式很多,用這些方式可以方便的獲取shell變量的值,變量值的長度,變量的一個字串,變量被部分替換后的值等等。

| 變量值的定義

字符串定義

# name=Iamlizhenya

# name='I am lizhenya'

# name="I am lizhenya"

# echo $name

I am lizhenya

雙引號和單引號的區別:雙引號解析變量,單引號所見即所得不能解析變量,不加引號可以解析變量

數字的定義

# age="12 23 432"

# echo $age

12 23 432

命令的定義

通過``調用命令

# date +%F-%H-%M-%S

2022-07-07-18-02-34

# time=`date +%F-%H-%M-%S`

# echo $time

2022-07-07-18-02-40

# 時間是固定 每次調用都相同

# echo $time

2022-07-07-18-02-40

通過$()調用命令

# time=$(date +%F-%H-%M-%S)

# echo $time

2022-07-07-18-02-52

| 變量可以定義變量

# ip=`ifconfig eth0|awk 'NR==2{print $2}'`

# echo $ip

10.0.0.7

# dir=${ip}_${time}

# echo $dir

10.0.0.7_2022-07-07-18-11-34

當shell腳本中出現2條以上相同的命令就將它們寫成變量

| 核心位置變量

ebf9d0b2-ad2a-11ef-93f3-92fbcf53809c.png

echo hehe...........

shell函數

函數是命令的集合 完成特定功能的代碼塊

函數代碼塊 方便復用

函數類似變量 只有先定義才能執行

區別:變量不調用也會執行 name=oldboy 函數只有調用才會執行代碼

| 函數的定義

#!/bin/sh

fun1(){

echo "函數的第一種定義方式"

}

fun1

function fun2 {

echo "函數的第二種定義方式"

}

fun2

function fun3(){

echo "函數的第三種定義方式"

}

fun3

案例: 菜單

#!/bin/sh

fun1(){

echo -e " 1.包子"

echo -e " 2.麻辣燙"

echo -e " 3.小米粥"

echo -e " 4.漢堡"

echo -e " 5.燒烤"

}

fun1

| 函數復用

# cat 1.sh

#!/bin/bash

. /server/scripts/day4/test.sh

fun3

# sh 1.sh

函數的第三種定義方式

# cat test.sh

#!/bin/sh

fun1(){

echo "函數的第一種定義方式"

}

function fun2 {

echo "函數的第二種定義方式"

}

function fun3(){

echo "函數的第三種定義方式"

}

案例: 函數的傳參

函數調用在函數名稱的后面

fun1 參數1 參數2 參數3 對應函數中的 $1 $2 $3

函數判斷文件是否存在

# cat fun.sh

#!/bin/sh

fun1(){

if [ -f $1 ];then

echo "$1 文件存在"

else

echo "$1 文件不存在"

fi

}

fun1 /etc/hosts

# sh fun.sh

/etc/hosts 文件存在

# cat fun.sh

#!/bin/sh

fun1(){

if [ -f $3 ];then

echo "$3 文件存在"

else

echo "$3 文件不存在"

fi

}

fun1 /etc/hosts /etc/passwd /etc/fsttttttt

# sh fun.sh

/etc/fsttttttt 文件不存在

# cat fun.sh

#!/bin/sh

fun1(){

if [ -f $1 ];then

echo "$1 文件存在"

else

echo "$1 文件不存在"

fi

}

fun1 $2

# sh fun.sh /etc/passwd /etc/hosts

/etc/hosts 文件存在

函數可以識別變量

#!/bin/sh

file=$1

fun1(){

if [ -f $file ];then

echo "$file 文件存在"

else

echo "$file 文件不存在"

fi

}

fun1

# sh fun.sh /etc/hosts

/etc/hosts 文件存在

| 函數變量

可以識別全局變量 函數外的都是當前shell的全局變量

只在函數內生效的變量定義

# cat fun.sh

#!/bin/sh

fun1(){

local num=20

for i in `seq $num`

do

total=$[$count+$i]

done

echo "當前運算的結果是: $total"

}

fun1

echo $num

# sh fun.sh

當前運算的結果是: 20

函數的返回值return

# cat fun.sh

#!/bin/sh

fun1(){

echo 100

return 50

}

result=`fun1`

echo "當前函數的返回值是: " $?

echo "當前函數的執行結果: " $result

# sh fun.sh

當前函數的返回值是: 50

當前函數的執行結果: 100

利用返回值來判斷

錯誤寫法

錯誤寫法一:

#!/bin/sh

fun1(){

if [ -f $1 ];then

return 50

else

return 100

fi

}

fun1 $1

[ $? -eq 50 ] && echo "文件存在"

[ $? -eq 100 ] && echo "文件不存在"

錯誤寫法二:

#!/bin/sh

fun1(){

if [ -f $1 ];then

return 50

else

return 100

fi

}

fun1 $1

if [ $? -eq 50 ];then

echo 文件存在

elif [ $? -eq 100 ];then

echo 文件不存在

fi

解決方法:

[ $? -eq 50 ] && echo 文件存在 || echo 文件不存在

if [ $? -eq 50 ];then

echo 文件存在

else

echo 文件不存在

fi

賦值的方式

re=$?

if [ $re -eq 50 ];then

echo 文件存在

elif [ $re -eq 100 ];then

echo 文件不存在

fi

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11415

    瀏覽量

    212264
  • Shell
    +關注

    關注

    1

    文章

    371

    瀏覽量

    23805
  • 腳本
    +關注

    關注

    1

    文章

    395

    瀏覽量

    28288

原文標題:Linux從零到精通:最簡單的Shell腳本入門教程(附PDF)

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏

    評論

    相關推薦

    Linux Shell腳本入門實戰詳解

    Linux Shell腳本入門實戰詳解
    發表于 02-17 15:03 ?715次閱讀

    嵌入式Linux入門(五、Shell腳本編程上:認識Shell腳本

    大家好,是矜辰所致,嵌入式 Linux入 門第五課,本課開始簡單學習一下 Shell 腳本編程。
    的頭像 發表于 07-13 16:10 ?1950次閱讀
    嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>入門</b>(五、<b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>編程上:認識<b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>)

    Linux shell腳本分享

    今天浩道跟大家分享幾個Linux運維中常用到的shell腳本
    發表于 07-18 09:53 ?639次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>shell</b><b class='flag-5'>腳本</b>分享

    Ubuntu_Linux入門精通

    Ubuntu_Linux入門精通
    發表于 08-20 14:07

    shell編程入門精通

    shell編程入門精通。。
    發表于 11-02 09:00

    Linux入門精通需要掌握什么?

    的思想。那么他就不可能理解開發人員的想法。其次,Linux不像windows,其涉及多方面的開發,比如shell腳本,python自動化運維,php、js等等 都是可以幫助運維人員更
    發表于 02-07 14:19

    入門精通Linux需學習的技能

    的思想。那么他就不可能理解開發人員的想法。其次,Linux不像windows,其涉及多方面的開發,比如shell腳本,python自動化運維,php、js等等 都是可以幫助運維人員更
    發表于 02-27 15:35

    Linux入門精通 高清版.

    本帖最后由 lee_st 于 2018-3-2 14:26 編輯 Linux入門精通 437頁 74.3M 高清版.
    發表于 03-01 15:55

    nios入門精通

    nios入門精通
    發表于 07-08 16:55 ?0次下載

    Ubuntu入門精通

    《Ubuntu入門精通》Ubuntu一般是作為學習linux入門操作系統,界面良好,現在已
    發表于 10-30 17:14 ?167次下載

    linux shell 腳本入門

    1. Linux 腳本編寫基礎 1.1 語法基本介紹 1.1.1 開頭 程序必須以下面的行開始(必須方在文件的第一行): #!/bin/sh 符號#!用來告訴系統它后面的參數是用來執行該文件的程序
    發表于 11-07 15:44 ?11次下載

    如何創建和執行一個簡單Linux shell腳本

     如果您愿意要嘗試更長的shell腳本,請將下面的shell腳本(并附加為PDF和ODT文件)復制文本編輯器中,保存,使其可執行并運行。當
    的頭像 發表于 11-06 17:28 ?1.3w次閱讀

    Linux命令行與shell腳本編寫

    Linux命令行與shell腳本編寫
    發表于 01-11 16:50 ?4次下載

    Linux Shell腳本經典案例分享

    ? 作為一名 Linux 運維工程師,會寫好的腳本不僅能提高工作效率,還能有更多的時間做自己的事。最近在網上沖浪的時候,發現大家對Shell腳本都有“心結”,要么覺得自己寫出來不好
    發表于 06-16 14:03 ?749次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>經典案例分享

    DeepSeek:入門精通

    DeepSeek:入門精通
    發表于 02-08 18:00 ?119次下載

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品
    主站蜘蛛池模板: 国产美女视频一区二区二三区 | nxgx69日本护士| 国产亚洲精品久久久久久国模美 | 99国内精品 | 日本在线高清不卡免费播放 | 小sao货ji巴cao死你视频 | www在线小视频免费 www伊人网 | 俄罗斯xxxxxbbbbb | 亚洲 欧美 日韩 国产 视频 | 亚洲午夜精品A片久久软件 亚洲午夜精品A片久久不卡蜜桃 | 美女xx00| 性色AV一区二区三区咪爱四虎 | 亚洲乱亚洲乱妇在线观看 | 6080伦理久久亚洲精品 | 免费国产成人手机在线观看 | 国产成人精品免费青青草原app | 色偷偷91综合久久噜噜 | 国产精品爽爽久久久久久竹菊 | 久久婷婷丁香五月色综合啪免费 | 私人玩物黑丝 | 国产精品美女久久久网站动漫 | 最近的2019中文字幕国语完整版 | 伊人久久久久久久久香港 | 国内精品久久久久久久试看 | 日本女人水多 | 自慰弄湿白丝袜 | 国产毛A片久久久久久无码 国产毛A片啊久久久久久A | 在线观看永久免费网址 | 色综合久久综合网观看 | 三级黄色网 | 在线免费观看日本 | 成年黄网站免费大全毛片 | 亚洲 制服 欧美 中文字幕 | 韩国伦理电影在线神马网 | 网红刘婷hd国产高清 | 色偷偷888欧美精品久久久 | 精品精品国产自在现拍 | 久久这里只有精品国产99 | 一区二区三区国产亚洲网站 | 国产精品成人免费观看 | 果冻传媒MV免费播放在线观看 |