[華為云在線課程][Shell腳本編程基礎][第二章Shell腳本語言的基本用法][1基本結構][學習筆記]

      網友投稿 798 2025-04-06

      shell腳本的用途


      1,將簡單的命令組合完成復雜的工作,自動化執行命令提高工作效率

      2,減少手工命令的重復輸入,一定程度上避免人為錯誤

      3,將軟件或應用的安裝及配置實現標準化

      4,用于實現日常性的,重復性的運維工作,如:文件打包壓縮備份,監控系統狀態運行狀態并實現告警等

      shell腳本基本結構

      shell腳本編程:是基于過程式、解釋執行的語言

      編程語言的基本結構:

      各種系統命令的組合

      數據存儲:變量、數組

      表達式:a+b

      控制語句if

      shell腳本:包含一些命令或聲明,并符合一定格式的文本文件

      格式要求:首行shebang機制

      #!/bin/bash #!/usr/bin/python #!/usr/bin/perl

      shell腳本創建過程

      第一步:使用文本編輯器來創建文本文件

      第一行必須包括shell聲明序列:#!

      例子:

      #!/bin/bash

      添加注釋,注釋以#開頭

      第二步:加執行權限

      給與執行權限,在命令行上指定腳本的絕對或相對路徑

      第三步:運行腳本

      直接運行編譯器,將腳本作為解釋器程序的參數運行

      shell腳本注釋規范

      第一個腳本

      #!SHEBANG CONFIGURATION_VARIABLES FUNCTION_DEFINITIONS MAIN_CODE

      例子:第一個shell腳本hello world

      參考文檔:https://zh.wikipedia.org/wiki/Hello_World

      遠程執行shell文件注意:

      坑一:如果執行錯誤并提示curl: (7) Failed connect to 10.0.0.110:80; No route to host。原因就是沒有關閉防火墻。需要執行systemctl stop/disable firewalld關閉防火墻。

      坑二:關閉防火墻后執行出現如下提示,表示沒有關閉selinux

      [root@localhost ~]# curl http://10.0.0.110/helloworld.sh 403 Forbidden

      Forbidden

      You don't have permission to access /helloworld.sh on this server.

      關閉方法: 1,臨時關閉,在終端輸入"setenforce 0"。 2,永久關閉,在終端輸入"vim /etc/selinux/config",將SELINUX的值改為"disalbed"。

      坑三:如果能ping,卻不能curl,記得打開httpd服務

      [root@localhost ~]# curl 10.0.0.110 curl: (7) Failed connect to 10.0.0.110:80; Connection refused [root@localhost ~]# systemctl start httpd

      #!/bin/bash #經典寫法 echo "Hello World!"; #流行寫法 echo 'Hello World!'; #-------------------------------------- #執行方法1 [root@localhost Code]# bash helloworld.sh #執行方法2 [root@localhost Code]# cat helloworld.sh | bash #執行方法3 [root@localhost Code]# bash < helloworld.sh #執行方法4 [root@localhost Code]# chmod +x helloworld.sh #執行方法5(遠程執行) [root@localhost Code]#yum install httpd -y [root@localhost Code]#systemctl start httpd [root@localhost Code]#mv /data/hello.sh /var/www/html/ [root@localhost ~]# curl 10.0.0.110/helloworld.sh | bash % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 32 100 32 0 0 19300 0 --:--:-- --:--:-- --:--:-- 32000 hello world [root@localhost ~]# curl 10.0.0.110/helloworld.sh #!/bin/bash echo "hello world"; [root@localhost ~]# curl -s 10.0.0.110/helloworld.sh | bash hello world [root@localhost ~]# curl 10.0.0.110/helloworld.sh 2>/dev/null | bash hello world [root@localhost ~]# curl 10.0.0.110/helloworld.sh >/dev/null | bash % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 32 100 32 0 0 23494 0 --:--:-- --:--:-- --:--:-- 32000 #絕對路徑 [root@localhost Code]# cd .. [root@localhost hello]# Code/helloworld.sh #相對路徑 [root@localhost Code]# ./helloworld.sh

      例子:備份腳本

      #!/bin/bash echo -e "3[1;32mStarting backup...3[0m" sleep 2 cp /etc/vimrc /home/hello/Code/vimrc\-`date +%F` echo -e "3[1;32mBackup is finished3[0m" [root@localhost Code]# ./backup.sh Starting backup... Backup is finished [root@localhost Code]# ll total 8 -rwxr-xr-x 1 root root 162 Apr 14 16:39 backup.sh -rw-r--r-- 1 root root 2062 Apr 14 16:40 vimrc-2022-04-14

      shell腳本調試

      只檢測腳本中的語法錯誤,但無法檢查出命令錯誤,但不真正執行腳本

      bash -n /path/to/some_script

      調試并執行

      bash -x /path/to/some_script

      例子:檢查語法錯誤

      [華為云在線課程][Shell腳本編程基礎][第二章Shell腳本語言的基本用法][1基本結構][學習筆記]

      #!/bin/bash echo -e "3[1;32mStarting backup...3[0m" sleep 2 cp /etc/vimrc /home/hello/Code/vimrc\-`date +%F` echo -e "3[1;32mBackup is finished3[0m"))) [root@localhost Code]# bash -n backup.sh backup.sh: line 5: syntax error near unexpected token `)' backup.sh: line 5: `echo -e "3[1;32mBackup is finished3[0m")))'

      例子:調試并執行

      #!/bin/bash echo -e "\033[1;32mStarting backup...\033[0m" sleep 2 cp /etc/vimrc /home/hello/Code/vimrc\-`date +%F` cho -e "\033[1;32mBackup is finished\033[0m" [root@localhost Code]# bash -x backup.sh + echo -e '\033[1;32mStarting backup...\033[0m' Starting backup... + sleep 2 ++ date +%F + cp /etc/vimrc /home/hello/Code/vimrc-2022-04-14 + cho -e '\033[1;32mBackup is finished\033[0m' backup.sh: line 5: cho: command not found

      總結:腳本錯誤常見的有三種

      語法錯誤,會導致后續的命令不繼續執行,可以用bash -n檢查錯誤,提示的出錯行數不一定是準確的

      命令錯誤,默認后續的命令還會繼續執行,用bash -n無法檢查出來,可以使用bash -x進行觀察

      邏輯錯誤:只能使用bash -x進行觀察

      Bash Shell

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:中小企業ERP軟件可以使下班族的生活更輕松的6種方法
      下一篇:【課堂筆記】C++程序設計- 第一章-緒論
      相關文章
      亚洲高清在线观看| 国产精品亚洲а∨无码播放麻豆| 相泽南亚洲一区二区在线播放| 久久精品国产亚洲AV无码偷窥| 久久亚洲精品视频| a级亚洲片精品久久久久久久| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 亚洲第一永久AV网站久久精品男人的天堂AV| 亚洲日韩国产精品乱-久| 亚洲无圣光一区二区| 亚洲蜜芽在线精品一区| 亚洲美女视频一区| 亚洲精品中文字幕乱码影院| 97久久精品亚洲中文字幕无码| 亚洲一区二区三区日本久久九| 亚洲国产精品久久久久网站 | 亚洲乱色熟女一区二区三区蜜臀| 最新国产精品亚洲| 亚洲乱妇老熟女爽到高潮的片| 亚洲AV无码一区二区三区久久精品 | 中国china体内裑精亚洲日本| 国产亚洲福利在线视频| 四虎亚洲精品高清在线观看| 亚洲熟伦熟女专区hd高清| 亚洲久热无码av中文字幕| 亚洲AV成人无码网站| 一本色道久久88亚洲综合| 亚洲一区二区三区在线视频 | 国产亚洲精品线观看动态图| 亚洲国产日韩在线视频| 亚洲av永久无码精品国产精品| 亚洲欧洲国产精品你懂的| 亚洲成a人片在线观| 亚洲精品国产精品国自产网站| 亚洲精品自偷自拍无码| 亚洲精品成人a在线观看| 亚洲色WWW成人永久网址| 亚洲情a成黄在线观看动漫尤物| 亚洲理论在线观看| 亚洲综合激情五月丁香六月| 国产精品亚洲片在线花蝴蝶 |