Shell入門知識

来源:http://www.cnblogs.com/liyuhui-Z/archive/2017/11/06/7792108.html
-Advertisement-
Play Games

Shell 簡介 Shell作為命令語言,它互動式地解釋和執行用戶輸入的命令;作為程式設計語言,它定義了各種變數和參數,並提供了許多在高級語言中才具有的控制結構,包括迴圈和分支。 常常作為批處理命令來使用,用來提高生產效率! 入門 下麵是Shell的一段簡單入門程式,我們在Linux上面使用 然後將 ...


Shell 簡介

Shell作為命令語言,它互動式地解釋和執行用戶輸入的命令;作為程式設計語言,它定義了各種變數和參數,並提供了許多在高級語言中才具有的控制結構,包括迴圈和分支。

常常作為批處理命令來使用,用來提高生產效率!

入門

下麵是Shell的一段簡單入門程式,我們在Linux上面使用vi test.sh然後將下麵的代碼打進去,運行sh test.sh 即可

#!/bin/bash    

echo "Hello World !"

上面這段程式是輸出HelloWorld,其中#!/bin/bash 指定編譯器,必須在腳本的第一行,echo輸出信息,這裡為輸出Hello World

如何運行這段程式呢, 第一步首先進入到該腳本所在的目錄,比如cd /root/shelltest ,運行命令sh test.sh 這樣就可以進行輸入了。

程式中的變數

定義全局變數

全局變數一直存在,不會因為切換shell終端或者退出登錄而消失,全局變數需要在 /root/.bush_profile 、/etc/bashrc、/etc/profile、/etc/profile.d文件中設置,設置的格式為export name=value

在/etc/profile中定義完成後,需要重新載入配置文件 source /etc/profile

其中在/etc/profile.d設置shell腳本可以在啟動shelle客戶端的時候就執行這個腳本,這個文件夾中存儲的都為腳本。

創建腳本內容如下

則新打開客戶端的時候則會執行這個腳本,輸出對應的內容。

定義局部變數, 局部變數在退出Shell客戶端時會失效

單引號雙引號的區別

單引號:原樣輸出

雙引號:如果裡面有變數,會輸出變數

沒有引號:輸出變數

傳遞的參數

可以在調用腳本的時候給腳本傳遞參數,腳本內使用$1 $2 ...... 接受傳遞的參數,當參數超過9的時候,需要用花括弧括起來 ${10}

特殊的調用參數:

    $0:返回Shell文件名稱
    $$:當前腳本的PID
    $#:傳遞的所有參數
    $@:程式中的所有參數,這是將參數傳遞給其他程式的最佳方式。
    $! :執行的上一個命令的PID
    $?:上一次指令的返回值
    $_:此命令前面的最後一個參數
    $* :獲取所有的參數

不同腳本之間訪問變數

使用sh命令啟動的腳本,則在腳本結束其內部的屬性都會消失,其他的腳本不能訪問其內部的屬性。

使用source 命令啟動腳本,則在腳本結束後其屬性不會失效,同時其他的腳本也能訪問到。

取消變數

使用unset可以取消變數,這個變數包括環境變數和局部變數

數組

數組中可以存放多個值。Bash Shell 只支持一維數組(不支持多維數組),初始化時不需要定義數組大小(與 PHP 類似),數組下標從0開始。

定義數組

    array=(value1 value2 value3)
    
    array_name[0]=value0

讀取數組

${array_name[index]}

獲取數組中全部的元素

${my_array[@]}

獲取數組的長度

${#my_array[*]}

流程式控制制

if

如果else語句中沒有執行語句,不可以寫

if condition
then
    command1 
    command2
    ...
    commandN 
fi

------------------

if condition
then
    command1 
    command2
    ...
    commandN
else
    command
fi

------------
if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

for

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

while

while condition
do
    command
done

until

類似do-while迴圈,在最後判斷條件,最少執行一次

until condition
do
    command
done

case

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

函數

demoFun(){   // 定義  
    echo "這是我的第一個 shell 函數!"
}
echo "-----函數開始執行-----"
demoFun   // 調用,如果需要傳遞參數直接在後面跟就好  demoFun 1 2 3
echo "-----函數執行完畢-----"

運算符

  • expr 是一款表達式計算工具,使用它能完成表達式的求值操作。

  • expr 2 + 2 使用方法 , 需要註意的為1.表達式和運算符之間要有空格 2. 需要用``引起來

關係運算符

使用方法:

if [ $a -eq $b ]
then
   echo "$a -eq $b : a 等於 b"
else
   echo "$a -eq $b: a 不等於 b"
fi

布爾運算符

使用方法

if [ $a -lt 100 -a $b -gt 15 ]
then
   echo "$a 小於 100 且 $b 大於 15 : 返回 true"
else
   echo "$a 小於 100 且 $b 大於 15 : 返回 false"
fi

邏輯運算符

字元串運算符

文件測試運算符


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • redis算是緩存界的老大哥了,最近做的事情對redis依賴較多,使用了裡面的發佈訂閱功能,事務功能以及SortedSet等數據結構,後面準備好好學習總結一下redis的一些知識點。 原文地址:http://www.jianshu.com/p/8209554b36ce 先看下redis發佈訂閱的結構 ...
  • 一.在瀏覽器當中輸入以下地址 https://dev.mysql.com/downloads/mysql/ 二.進入以下界面:直接點擊下麵位置 ,選擇跳過登錄 點過這後直接下載. 三.下載完成後, 直接雙擊打開,彈出以下界面,再繼續點擊即可 下麵 一直點繼續,和正學安裝其它軟體一樣 四.啟動MySQ ...
  • 1 修改三台虛擬機的/ect/hosts文件 2 修改三台虛擬機的/etc/ssh/sshd_config 將前面的#號去掉 3 修改三台虛擬機的/etc/selinux/config 4 重啟虛機三台虛擬機 5 配置SSH無密碼登錄 三台虛擬機依次操作如下: 192.168.168.101 192 ...
  • 如圖:contoso這家公司的IT環境中有很多類型的IT資源,而目前這些IT資源都處於一個分散管理的狀態中,這樣無形中增加了contoso這家公司的管理成本,而且管理制度沒有辦法落實到實際的生產環境中去。 那麼,如何解決這個問題呢? 難道我們把這些個東西都放一個庫房去?那麼員工呢?部門經理呢?也扔庫 ...
  • 1.活用【which/whatis/whereis】 whereis 查找文件的位置 whatis 查詢命令的幫助 whichis 查看可執行文件的位置 2.find 命令 find path -option [ -print ] [ -exec -ok command ] {} ; 參數說明 : ...
  • cmd—>bcdedit -set testsigning off重啟電腦就好了 ...
  • 當嘗試把Excel導入SQL時,發生此異常: Unexpected error from external database driver (1). 在網上查找到一個解決方法,網址http://datacap.hk/en/knowledge_base/export-excel-file-proble ...
  • 1.導入證書 打開IIS服務管理器,點擊電腦名稱,雙擊‘伺服器證書 雙擊打開伺服器證書後,點擊右則的導入 選擇證書文件,點擊確定 2.站點開啟SSL 選擇證書文件,點擊確定 點擊網站下的站點名稱,點擊右則的綁定 打開網站綁定界面後,點擊添加 添加網站綁定內容:選擇類型為https,埠443和指定 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...