欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Shell中echo命令及編程規(guī)范

 更新時間:2023年06月20日 09:34:37   作者:小啄學(xué)習(xí)日記  
本文主要介紹了Shell中echo命令及編程規(guī)范,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一.Shell腳本編程概述

1.基本概念

  • 將要執(zhí)行的命令按順序保存到一個文本文件;
  • 給該文件可執(zhí)行權(quán)限;
  • 可結(jié)合各種Shell控制語句以完成更復(fù)雜的操作。

2.作用

Linux 系統(tǒng)中的 Shell 是一個特殊的應(yīng)用程序,它介于操作系統(tǒng)內(nèi)核與用戶之間,充當(dāng) 了一個“命令解釋器”的角色,負(fù)責(zé)接收用戶輸入的操作指令(命令)并進(jìn)行解釋,將需要執(zhí) 行的操作傳遞給內(nèi)核執(zhí)行,并輸出執(zhí)行結(jié)果。 常見的 Shell 解釋器程序有很多種,使用不同的 Shell 時,其內(nèi)部指令、命令行提示符 等方面會存在一些區(qū)別。

3.Linux系統(tǒng)中常見的Shell腳本種類

通過/etc/shells 文件可以了解當(dāng)前Linux系統(tǒng)所支持的 Shell 腳本種類。

  • bash:基于gun的框架下發(fā)展的shell(/bin/bash)是目前大多數(shù)Linux 版本采用的默認(rèn)shell
  • csh:類似c語言的shell
  • tcsh:整合了csh提供了更多功能
  • sh:已經(jīng)被bash替換
  • nologin:讓用戶無法登錄

注: bash ( /bin/bash) 是目前大多數(shù)Linux版本采用的默認(rèn)Shell。

4.應(yīng)用場景

  • 重復(fù)性操作
  • 交互性任務(wù)
  • 批量事務(wù)處理
  • 服務(wù)運(yùn)行狀態(tài)監(jiān)控
  • 定時任務(wù)執(zhí)行

5.問題補(bǔ)充

5.1 為什么系統(tǒng)上合法的Shel1要寫入/etc/she1ls這個文件?

    因?yàn)橄到y(tǒng)某些服務(wù)運(yùn)行過程中,會去檢查用戶能夠使用的Shell,而這些shell的查詢就是借由/etc/shells這個文件。

5.2 用戶什么時候可以取得shell來工作?用戶默認(rèn)會取得哪一個shell?

     當(dāng)用戶登錄的時候,系統(tǒng)就會給我一個shell讓我來用,而這個登錄取得的Shell就記錄在/etc/passwd這個文件內(nèi)

二.Shell腳本的構(gòu)成規(guī)范

編寫腳本代碼

  • 使用vi或者vim編輯器,一般都是使用vim編輯器
  • 每行一條Linux命令,按執(zhí)行順序一次編寫
vim 1.sh					#使用vim編輯器編寫shell腳本
#!/bin/bash					#腳本解釋器聲明
#輸出hello zhuzi		    #注釋
echo "hello zhuzi"			#linux命令
  • 腳本申明(解釋器):第一行開頭“#!/bin/bash”,表示此行以下的代碼語句是通過/bin/bash程序來解釋執(zhí)行。#!/bin/bash為默認(rèn)的解釋器,其他類型的解釋器如#!/bin/python  #!/bin/expect
  • 注釋信息:以#開頭的語句表示為注釋信息
  • 可執(zhí)行語句:比如echo命令用于輸出"  "之間的字符串

三. Shell腳本的執(zhí)行 

1.腳本執(zhí)行邏輯

  • 順序執(zhí)行:程序按從上到下順序執(zhí)行
  • 選擇執(zhí)行:程序執(zhí)行過程中,根據(jù)條件的不同,進(jìn)行選擇不同分支繼續(xù)執(zhí)行
  • 循環(huán)執(zhí)行:程序執(zhí)行過程中需要重復(fù)執(zhí)行多次某段語句

2.Shell腳本的執(zhí)行方法

#法一:指定路徑的命令,要求文件必須有x權(quán)限
[root@localhost ~]#chmod +x /root/first.sh 
[root@localhost ~]#cd /root/
[root@localhost ~]#./first.sh 
當(dāng)前目錄位于:
/root
#法二:指定Shell來解釋腳本,不要求文件必須有x權(quán)限。
[root@localhost ~]#bash first.sh 
當(dāng)前目錄位于:
/root
#法三:source 與 . 腳本路徑執(zhí)行shell腳本
[root@localhost ~]#source first.sh 
當(dāng)前目錄位于:
/root
#法四:將腳本文件放入$PATH中目錄的其中一個目錄,直接輸入腳本名
echo $PATH
/usr/local/sbin:/usr/local/bin :/usr/sbin :/usr/bin: / rpot/bin
#法五:自己創(chuàng)建一個路徑(將腳本文件所在的絕對路徑添加至PATH中)
在/etc/profile文件最后添加:export PATH=$PATH:腳本所在的絕對路徑
直接輸入腳本名執(zhí)行腳本

2.1 方法一:指定路徑的命令,要求文件必須有 x(可執(zhí)行)權(quán)限

chmod +x /root/1.sh					#給腳本添加可執(zhí)行權(quán)限
指定絕對路徑: /root/1.sh 			
指定相對路徑: ./1.sh

2.2 方法二:指定shell來解釋腳本,不要求文件必須有 x (可執(zhí)行)權(quán)限

bash(sh)執(zhí)行腳本, 系統(tǒng)會創(chuàng)建一個子shell環(huán)境,并在這個子shell環(huán)境中執(zhí)行這個腳本 ,腳本執(zhí)行結(jié)束后系統(tǒng)就會自動退出bash環(huán)境

2.3 方法三: source 與 . 腳本路徑執(zhí)行shell腳本(不建議使用)

 不建議使用source 與 . 執(zhí)行腳本會在當(dāng)前 shell 環(huán)境中執(zhí)行腳本 影響當(dāng)前環(huán)境

2.4 方法四: 將腳本文件放入$PATH中目錄的其中一個目錄,直接輸入腳本名執(zhí)行

echo $PATH
/usr/local/sbin:/usr/local/bin :/usr/sbin :/usr/bin: / rpot/bin

以下兩個目錄一般放自己創(chuàng)建或第三方應(yīng)用程序生成的命令文件

  • /usr/local/sbin:只有管理員能執(zhí)行的命令
  • /usr/local/bin :所有用戶能夠執(zhí)行的命令

以下兩個目錄一般放系統(tǒng)自帶或者系統(tǒng)生成的命令文件

  • /usr/sbin :只有管理員能執(zhí)行的命令
  • /usr/bin: 所有用戶能夠執(zhí)行的命令

/ root/bin:不存在

將當(dāng)前文件做個軟連接放入或者使用cp復(fù)制到 /usr/local/bin目錄下
直接輸入腳本名執(zhí)行腳本

使用cp命令

2.5 方法五:自己創(chuàng)建一個路徑(將腳本文件所在的絕對路徑添加至PATH中)

在/etc/profile文件最后添加:export PATH=$PATH:腳本所在的絕對路徑
直接輸入腳本名執(zhí)行腳本

[root@Zhuzi ~]#vim /etc/profile
export PATH=$PATH:/root/shell  
#export使環(huán)境變量的值全局環(huán)境下生效,不加export默認(rèn)在當(dāng)前環(huán)境變量下生效
[root@Zhuzi ~]#source /etc/profile   #刷新配置文件
[root@Zhuzi ~]# echo $PATH           #查看當(dāng)前路徑
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/shell
[root@Zhuzi ~]# chmod +x 1.sh        #給腳本加上執(zhí)行權(quán)限
[root@Zhuzi ~]#1.sh                  #輸入腳本名 直接執(zhí)行
hello zhuzi 

3.腳本錯誤調(diào)試

腳本錯誤種類

  • 命令錯誤:命令出錯不會影響接下來的命令繼續(xù)
  • 語法錯誤:會影響接下來的命令繼續(xù)
  • 邏輯錯誤:只能自己去篩查代碼的正確

檢查腳本錯誤

  • 檢查語法錯誤:bash -n 腳本名稱 (不在當(dāng)前目錄下加絕對路徑)
  • 檢查邏輯錯誤:bash -x 腳本名稱 (不在當(dāng)前目錄下加絕對路徑)

總結(jié):腳本錯誤常見的有三種區(qū)別

  • 語法錯誤,會導(dǎo)致后續(xù)的命令不繼續(xù)執(zhí)行,可以用bash -n 檢查錯誤,提示的出錯行數(shù)不一定是準(zhǔn)確的
  • 命令錯誤,默認(rèn)后續(xù)的命令還會繼續(xù)執(zhí)行,用bash -n 無法檢查出來 ,可以使用 bash -x 進(jìn)行觀察
  • 邏輯錯誤:只能使用 bash -x 進(jìn)行

四.重定向與管道符

由于Shell腳本“批量處理”的特殊性,其大部分操作過程位于后臺,不需要用戶進(jìn)行干預(yù),因此要學(xué)會提取、過濾執(zhí)行信息變得十分重要,所以我們需要重定向和管道。

1.交互式硬件設(shè)備標(biāo)準(zhǔn)輸出輸入

類型設(shè)備文件文件描述編號默認(rèn)設(shè)備
標(biāo)準(zhǔn)輸入/dev/stdin0鍵盤
標(biāo)準(zhǔn)輸出/dev/stdout1顯示器
標(biāo)準(zhǔn)錯誤輸出/dev/stderr2顯示器
  • 標(biāo)準(zhǔn)輸入:從該設(shè)備接收用戶輸入的數(shù)據(jù)
  • 標(biāo)準(zhǔn)輸出:通過該設(shè)備向用戶輸出數(shù)據(jù)
  • 標(biāo)準(zhǔn)錯誤:通過該設(shè)備報(bào)告執(zhí)行出錯信息

2.重定向具體操作

重定向就是:不通過標(biāo)準(zhǔn)輸出到屏幕上,輸出到你指定的位置

類型操作符用途
重定向輸入<從指定的文件讀取數(shù)據(jù),而不是從鍵盤輸入
重定向輸出>將輸出結(jié)果保存到指定的文件(覆蓋原有內(nèi)容)
重定向輸出>>將輸出結(jié)果換行添加在文件尾部
重定向錯誤輸出2>將錯誤信息保存到指定的文件(覆蓋原有內(nèi)容)
重定向錯誤輸出2>>將錯誤信息追加到指定的文件中
混合輸出&>將標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯誤的內(nèi)容保存到同一個文件中

示例1:重定向輸入與輸出修改密碼

示例2:覆蓋追加

#將12345678輸入到文件log.txt中
[root@Zhuzi ~]#echo "12345678" > log.txt
[root@Zhuzi ~]#cat log.txt 
12345678
[root@Zhuzi ~]#
#再將112234寫入log.txt中,這個時候會覆蓋原來的數(shù)據(jù)
[root@Zhuzi ~]#echo "112234" > log.txt 
[root@Zhuzit ~]#cat log.txt 
112234
[root@Zhuzi ~]#
#繼續(xù)將112234寫入log.txt中,使用>>,這個時候會追加原來的數(shù)據(jù)
[root@Zhuzi ~]#echo "112234" >> log.txt 
[root@Zhuzit ~]#cat log.txt 
112234
112234

示例3:混合輸出

3.管道符

管道符號 “|”

將左側(cè)的命令輸出結(jié)果,作為右側(cè)命令的處理對象

3.1 使用管道符修改密碼

3.2 查看文件內(nèi)容

五.echo命令:打印輸出內(nèi)容

選項(xiàng)作用
-n不追加換行
-e\b&nbsp;   退格
\c    抑制更多的輸出
\n    換行

\t    橫向制表符

\v    縱向制表符

echo -n

echo -e \b          

echo -e \c          

echo -e \n          

echo -e \t           

 echo -e \v         

到此這篇關(guān)于Shell中echo命令及編程規(guī)范的文章就介紹到這了,更多相關(guān)Shell echo命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • linux使用管道命令執(zhí)行ps獲取cpu與內(nèi)存占用率

    linux使用管道命令執(zhí)行ps獲取cpu與內(nèi)存占用率

    這篇文章主要介紹了linux使用管道命令執(zhí)行ps獲取cpu與內(nèi)存占用率的示例,需要的朋友可以參考下
    2014-02-02
  • shell腳本設(shè)置日志格式的方法

    shell腳本設(shè)置日志格式的方法

    本文給大家分享shell腳本設(shè)置日志格式的相關(guān)知識,設(shè)置日志級別并輸出對應(yīng)日志,文中還給大家提到了shell輸出格式化日志信息的腳本,感興趣的朋友跟隨小編一起看看吧
    2022-10-10
  • Shell腳本實(shí)現(xiàn)自動修改IP地址

    Shell腳本實(shí)現(xiàn)自動修改IP地址

    這篇文章主要介紹了Shell腳本實(shí)現(xiàn)自動修改IP地址,本文直接給出實(shí)現(xiàn)代碼,并在代碼中標(biāo)注大量注釋,需要的朋友可以參考下
    2014-10-10
  • Linux中umount命令的使用方法及操作實(shí)例

    Linux中umount命令的使用方法及操作實(shí)例

    在Linux系統(tǒng)中,umount命令用于卸載已經(jīng)掛載的文件系統(tǒng),本文將詳細(xì)介紹umount命令的功能、使用方法以及常見的操作實(shí)例,文章通過代碼示例給大家講解的非常詳細(xì),具有一定參考價值,需要的朋友可以參考下
    2024-06-06
  • 結(jié)合示例說明shell是如何被解析的

    結(jié)合示例說明shell是如何被解析的

    本文主要介紹了結(jié)合示例說明shell是如何被解析的,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Shell獲取進(jìn)程PID的實(shí)現(xiàn)

    Shell獲取進(jìn)程PID的實(shí)現(xiàn)

    本文主要介紹了Shell獲取進(jìn)程PID的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Shell查找命令find和grep的具體使用

    Shell查找命令find和grep的具體使用

    本文主要介紹了 Shell查找命令find和grep的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Linux 文件查找打包壓縮及解壓命令詳解

    Linux 文件查找打包壓縮及解壓命令詳解

    這篇文章主要介紹了Linux 文件查找,打包壓縮及解壓,文件查找和壓縮解壓是Linux系統(tǒng)中非常常見的操作,掌握了相關(guān)命令和技巧,可以提高我們的工作效率和文件管理能力,需要的朋友可以參考下
    2023-11-11
  • Shell中取今天、昨天、前天的時間操作代碼

    Shell中取今天、昨天、前天的時間操作代碼

    這篇文章主要介紹了Shell中取今天昨、昨天、前天的時間操作代碼,需要的朋友可以參考下
    2014-12-12
  • Shell實(shí)現(xiàn)多級菜單系統(tǒng)安裝維護(hù)腳本實(shí)例分享

    Shell實(shí)現(xiàn)多級菜單系統(tǒng)安裝維護(hù)腳本實(shí)例分享

    這篇文章主要介紹了Shell實(shí)現(xiàn)多級菜單系統(tǒng)安裝維護(hù)腳本實(shí)例分享,本文腳本用多級菜單實(shí)現(xiàn)管理WEB服務(wù)器、Mysql服務(wù)器、Nginx服器等,需要的朋友可以參考下
    2014-12-12

最新評論