首頁 運維 linux運維 shell基本語法的介紹與使用

shell基本語法的介紹與使用

Jun 20, 2017 am 11:24 AM
shell 基本 文法

一、變數

1.變數的命名規則:以字母或底線開頭,後面跟數字,字母或底線,最好不要隨便命名,要做到看見變數名能猜出其意義

2.變數賦值: x=100

      echo $x

 刪除變數:unset x










##”

#[root@bogon ~]# egon_salary=20000

[root@bogon ~]# echo ${egon_salary}yuan

20000yuan

4.bash中不必宣告資料類型,預設都是字元型

二、運算子


1.算術運算子:+ - * / %

[root@bogon ~]# echo $[5%2 ]

1

2.賦值運算子:=,+=,-=,*=,/=,%=

[root@bogon ~]# x=10

[root@bogon ~]# ((x+=1))

[root@bogon ~]# echo $x

11

3.關係運算子:<,>, !=,==,>=,<=,||,&&

關係運算子常與(( ))連用,[]可以達到同樣的結果,但(( ))不能判斷一個檔案的類型,判斷檔案類型必須用到[],[]又和test指令效果一樣

用$?查看指令執行結果,結果為0代表真,非0代表假

[root@bogon ~]# x=10

[root@bogon ~]# ((x>=8))[root@bogon ~]# echo $?

0

##4.shell裡的計算器

之前說過用$[]可以進行一些簡單的運算,但是如果涉及到小數的運算,就需要用到shell裡面的計算器了

首先要安裝軟體,yum install -y bc

[root@bogon ~]# res=$(echo 'scale=2;1/3' |bc -l |cut -d '.' -f2)

[root@bogon ~]# echo ${res}%

33%

5.test 指令測試

  test 

     -n str 字串長度不為零

     -z  str 字串長度為零

#     -b 檔案存在且為塊

#     -b 檔案存在且為區塊

#     -b 檔案存在且為區塊

#    目錄檔案

     -e 檔案存在

     -f 檔案存在且為普通檔案

     -h 檔案存在且為連結檔案

     -h 檔案存在且為連結檔案

    #     -s 文件存在且大於零位元組

   檔案之間的比較

    file1 -nt file2  file1創建時間比file2早 

   整數之間的比較
    int1 -ne int2 int1和int2不相等
    int1 -eq 2121 -eq 2 1(int#int#int#int# #    int1 -lt int2  int1小於int2

    int1 -le int2 int1小於等於int2

    int1 - 小於等於int2

   》   字串之間比較

    str1 = str2 str1和str2相等    str1 ! =str2 str1與str2不相等

  表達式之間的比較    expression1 -a expression2  表達式1與表達式2都為真

 ex  。式1或表達式2為真
6.測試舉例

  數字比較測試:    

[root@bogon ~]# [[ 2 > 1 ]][root@bogon ~]# echo $?0
[root@bogon ~]# ((20>10))[root@bogon ~]# echo $?0
[root@bogon ~]# ((20<10))[root@bogon ~]# echo $?1
登入後複製
##  字串測試

[root@bogon ~]# [ "abc" = "abc" ][root@bogon ~]# echo $?0
[root@bogon ~]# [[ "abc" = "abc" ]][root@bogon ~]# echo $?0
[root@bogon ~]# (("abc" = "abc"))[root@bogon ~]# echo $?1
登入後複製

  字串測試

[root@bogon ~]# [[ a = a && 1 < 2 ]][root@bogon ~]# echo $?0
[root@bogon ~]# [[ a = a && 1 < 2 ]][root@bogon ~]# echo $?0
登入後複製

[root@bogon ~]# (( a = a || 1 > 2 ))[root@bogon ~]# echo $?1[root@bogon ~]# [[ a = a || 1 > 2 ]][root@bogon ~]# echo $?0
登入後複製

input your name : zhangcan
input password : 123login successful
[root@bogon ~]# ./usertest.sh input your name : hha
input password : hag
user or password error
登入後複製
單純比較數字,用(( ))

除了單純數字之外的比較,用[[ ]]

三、流程控制

1.if 分公司

  1)驗證使用者帳號密碼:

#! /bin/bashuser='zhangcan'password='123'read -p 'input your name : ' name
read -p 'input password : ' codeif [ $name = $user -a $code = $password ];then
        echo 'login successful'elseecho 'user or password error'fi~
登入後複製
#!/bin/bash #根据用户输入的成绩,判断所属档次,并输出给用户read -p 'input your score : ' scoreif  [ $score -ge 90 ];then
    echo '优秀'elif [ $score -ge 70 -a $score -lt 90 ];then
    echo '良好'elif [ $score -ge 60 -a $score -lt 70 ];then
    echo '及格'elif [ $score -lt 60 ];then
    echo '较差'fi
登入後複製

  2)判斷成績檔次

#!/bin/bashwhile :
do
    read -p 'input your file : ' fileif [ -z $file ];thencontinueelsebreakfi
doneif [ -f $file ];then
    echo "$file is regular file"elif [ -b $file ];then
    echo "$file is block file"elif [ -d $file ];then
    echo "$file is directory file"elseecho "$file type unkonw"fi
登入後複製
2.while循環

  while (條件)
  do 

  指令######  done######範例:判斷使用者輸入的檔案是什麼類型######
#!/bin/bashfor i in {1..50}
do
    ping -c1 192.168.16.$i &> /dev/null  # -c1表示ping一次if [ $? -ne 0 ];then
        echo "192.168.16.$i successful"echo "192.168.16.$i" >> ~/ipavailable.txt
    fi
done~
登入後複製
## ####3.for迴圈######  for i in {1..10}      #in後面不一定是數字,只要是有回傳結果的指令都可以######  do### ###  echo $i######  done######範例1:寫一個腳本,測試子網路內可以使用的IP######
#!/bin/bashdir='/dev'for i in $(ls $dir)
doif [ -h $dir/$i ];then
        ((link+=1))elif [ -f $dir/$i ];then
        (( rfile+=1))elif [ -d $dir/$i ];then
        ((directory+=1))elif [ -b $dir/$i ];then
        (( block+=1 ))else(( typeunknow+=1))
    fi
done
echo 'block' $block
echo 'regular file' $rfile
echo 'directory' $directory
echo 'link' $link
echo 'unknow' $typeunknow
登入後複製
######範例2:統計/dev下每個檔案類型的數量######
#!/bin/bashfor ((i=1;i<=9;i++))
dofor ((j=1;j<=i;j++))
    do
        echo -n "$i*$j=$[$i*$j]"done
    echo
done
登入後複製
######4.嵌套循環######範例1:輸出一個九九乘法表######
#!/bin/bashuser=&#39;zhangcan&#39;password=&#39;123&#39;tag=truewhile $tag
do
    read -p &#39;input your name : &#39; name
    read -p &#39;input your password : &#39; codeif [[ $name = $user ]] && [[ $code = $password ]];then
        echo &#39;login successful&#39;while $tag
        do
            read -p &#39;>>: ' cmdif [[ $cmd = 'quit' ]];then
                tag=falseelse$cmd
            fi
        done
    fi
done
登入後複製
######示例2:驗證用戶登陸賬號密碼,登陸成功後可以執行命令,當輸入quit時退出######rrreee######              ###

以上是shell基本語法的介紹與使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在 Windows 11 上安裝經典 Shell? 如何在 Windows 11 上安裝經典 Shell? Apr 21, 2023 pm 09:13 PM

&lt;p&gt;自訂您的作業系統是讓您的日常生活更加愉快的絕佳方式。您可以變更使用者介面、套用自訂主題、新增小工具等等。因此,我們今天將向您展示如何在Windows11上安裝ClassicShell。 &lt;/p&gt;&lt;p&gt;程式已經存在了很長時間,並允許您修改作業系統。志工現在已經開始運作該組織,該組織於2017年解散。新專案名為OpenShell,目前在Github上可供有興趣的人使用。 &lt;/p&gt;&a

PowerShell 部署失敗並出現 HRESULT 0x80073D02 問題修復 PowerShell 部署失敗並出現 HRESULT 0x80073D02 問題修復 May 10, 2023 am 11:02 AM

您在執行腳本時是否看到此錯誤訊息「Add-AppxPackage:部署失敗,HRESULT:0x80073D02,無法安裝該包,因為它修改的資源目前正在使用中。PowerShell中出現錯誤0x80073D02…」?如錯誤訊息所述,當使用者在前一個進程執行時嘗試重新註冊一個或所有WindowsShellExperienceHost應用程式時,確實會發生這種情況。我們已經獲得了一些簡單的解決方案來快速解決這個問題。修復1–終止體驗主機程序您必須在執行powershell指令之前結束

以下是 Open Shell Windows 11 無法正常運作問題的修復 以下是 Open Shell Windows 11 無法正常運作問題的修復 Apr 14, 2023 pm 02:07 PM

無法在Windows 11上運行的 Open shell 並不是一個新問題,而且自從這個新作業系統問世以來一直困擾著使用者。 Open-Shell Windows 11 不工作問題的原因並不具體。它可能是由程式中的意外錯誤、病毒或惡意軟體的存在或損壞的系統檔案引起的。對於不知道的人,Open-Shell 是 2017 年停產的 Classic Shell 的替代品。您可以查看我們的教學課程,以了解如何在 Windows 11 上安裝 Classic Shell。如何替換 Windows 11 的開始菜

探險家.exe 在系統啟動時不啟動 [修復] 探險家.exe 在系統啟動時不啟動 [修復] Jun 03, 2023 am 08:31 AM

如今,許多Windows用戶開始遇到嚴重的Windows系統問題。問題是系統載入後Explorer.exe無法啟動,使用者無法開啟檔案或資料夾。雖然,Windows使用者在某些情況下可以使用命令提示字元手動開啟Windows資源管理器,並且每次系統重新啟動或系統啟動後都必須這樣做。這可能是有問題的,並且是由於下面提到的以下因素造成的。損壞的系統檔案。啟用快速啟動設定。過時或有問題的顯示驅動程式。對系統中的某些服務進行了更改。修改後的註冊表文件。請記住以上所有因素,我們提出了一些肯定會對用戶有所幫助

如何快速地把你的 Python 程式碼變成 API 如何快速地把你的 Python 程式碼變成 API Apr 14, 2023 pm 06:28 PM

提到API開發,你可能會想到DjangoRESTFramework,Flask,FastAPI,沒錯,它們完全可以用來寫API,不過,今天分享的這個框架可以讓你更快把現有的函數轉化為API,它就是Sanic 。 Sanic簡介Sanic[1],是Python3.7+Web伺服器和Web框架,旨在提高效能。它允許使用Python3.5中添加的async/await語法,這可以有效避免阻塞從而達到提升響應速度的目的。 Sanic致力於提供一種簡單且快速,集創建和啟動於一體的方法

Linux快速刪除檔案末尾行的操作步驟 Linux快速刪除檔案末尾行的操作步驟 Mar 01, 2024 pm 09:36 PM

Linux系統下在處理檔案時,有時候需要刪除檔案末端的行。這種操作在實際應用中很常見,可以透過一些簡單的命令來實現。本文將介紹在Linux系統中快速刪除檔案結尾行的操作步驟,同時提供具體的程式碼範例。步驟一:檢視文件末尾行在進行刪除操作之前,首先需要確認文件的末尾行是哪一行。可以使用tail指令來查看文件的結尾行,具體指令如下:tail-n1filena

在 Windows 上執行 shell 腳本檔案的不同方法 在 Windows 上執行 shell 腳本檔案的不同方法 Apr 13, 2023 am 11:58 AM

適用於 Linux 的 Windows 子系統第一種選擇是使用適用於 Linux 或 WSL 的 Windows 子系統,這是一個相容層,用於在 Windows 系統上本機執行 Linux 二進位執行檔。它適用於大多數場景,允許您在 Windows 11/10 中執行 shell 腳本。 WSL 不會自動可用,因此您必須透過 Windows 裝置的開發人員設定來啟用它。您可以透過前往設定 > 更新和安全性 > 對於開發人員來完成。切換到開發人員模式並透過選擇是確認提示。接下來,找 W

超硬核! 11個非常實用的 Python 和 Shell 拿來就用腳本實例! 超硬核! 11個非常實用的 Python 和 Shell 拿來就用腳本實例! Apr 12, 2023 pm 01:52 PM

Python 腳本部分範例:企業微信警告、FTP 用戶端、SSH 用戶端、Saltstack 用戶端、vCenter 用戶端、取得網域名稱ssl 憑證過期時間、傳送今天的天氣預報以及未來的天氣趨​​勢圖;Shell 腳本部分實例:SVN完整備份、Zabbix 監控使用者密碼過期、建置本地YUM 以及上篇文章中有讀者的需求(負載高時,查出佔用比較高的進程腳本並儲存或推播通知);篇幅有些長,也請大家耐心翻到文末,畢竟有彩蛋。 Python 腳本部分企業微信警告此腳本透過企業微信應用,進行微信告警,可用於

See all articles