Shell筆記

来源:http://www.cnblogs.com/orlion/archive/2016/04/20/5411276.html
-Advertisement-
Play Games

向腳本傳遞參數 運行: 特殊參數: 算術運算: 原生bash不支持簡單的數學運算,但是可以通過其他命令來實現,比如awk和expr 文件測試運算符: -r file :文件是否可讀 -w file: 文件是否可寫 -x file: 文件是否可執行 echo命令: 流程式控制制: if的語法: for的語 ...


#!/bin/bash
var2 = 'var2'
echo $var2
echo ${var2}
var2 = 'var2_1' #變數可以重覆定義但變數名前不加$

var3 = 'var3'
readonly var3 #將var3聲明為只讀變數
#var3 = 'var3_1' 這裡就不能再改變var3的值了

var4 = 'var4'
unset var4 #刪除var4變數
#echo ${var4} 這裡不能再調用var4了

var5 = 'var5'
var6 = "This is ${var5}"       #拼接字元串
var7 = "This is "$var5" ,too" #拼接字元串

var8 = 'itvar8'
echo ${#var8} #輸出var8的長度,即輸出6

var9 = 'Hello World!'
echo ${var9:1:5} #從字元串第2個字元開始截取5個字元

var10 = 'Hello World!'
echo `expr index "$var10" World` #查找字元World在字元串中的位置

arr1 = ('var1' 'var2' 'var3') #定義數組方式1
arr2 = (                           #定義數組方式2
    'var1'
    'var2'
    'var3'    
)

var3[1] = 'var2'            #通過下標賦值

var_arr_1 = ${var2[1]}  #讀取數組元素
var_arr_all = ${var2[@]}#讀取所有元素

arr_lend_1 = ${#var2[@]} #獲取數組長度
arr_lend_2 = ${#var2[*]} #獲取數組長度

向腳本傳遞參數

#!/bin/bash
echo "執行的文件名$0";
echo "第一個參數為$1";
echo "第二個參數為$2";

 

  運行:

$ chmod +x shell.sh 
$ ./shell.sh 1 2
執行的文件名shell.sh
第一個參數為1
第二個參數為2

  特殊參數:

參數處理     說明
$#     傳遞到腳本的參數個數
$*     以一個單字元串顯示所有向腳本傳遞的參數。
如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數。
$$     腳本運行的當前進程ID號
$!     後臺運行的最後一個進程的ID號
$@     與$*相同,但是使用時加引號,併在引號中返回每個參數。
如"$@"用「"」括起來的情況、以"$1" "$2""$n" 的形式輸出所有參數。
$-     顯示Shell使用的當前選項,與set命令功能相同。
$?     顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。

  

算術運算:

  原生bash不支持簡單的數學運算,但是可以通過其他命令來實現,比如awk和expr

#!/bin/bash

a=10
b=20
val=`expr $a + $b`
echo "a + b : $val"

 

文件測試運算符:

  -r file :文件是否可讀

  -w file: 文件是否可寫

  -x file: 文件是否可執行

file="/workplace/shell/shell.sh"
if [ -r $file ]
then
   echo "文件可讀"
else
   echo "文件不可讀"
fi
if [ -w $file ]
then
   echo "文件可寫"
else
   echo "文件不可寫"
fi
if [ -x $file ]
then
   echo "文件可執行"
else
   echo "文件不可執行"
fi

 

echo命令:

#!/bin/bash

read name   #read 命令從標準輸入中讀取一行,並把輸入行的每個欄位的值指定給 shell 變數
echo $name

echo "Hello World" > myfile #顯示結果定向至文件 

 

流程式控制制:

  if的語法:

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

  例:

#!/bin/sh
int=1
while(( $int<=5 ))
do
        echo $int
        let "int++"
done

  case的語法:

echo '輸入 1 到 4 之間的數字:'
echo '你輸入的數字為:'
read aNum
case $aNum in
    1)  echo '你選擇了 1'
    ;;
    2)  echo '你選擇了 2'
    ;;
    3)  echo '你選擇了 3'
    ;;
    4)  echo '你選擇了 4'
    ;;
    *)  echo '你沒有輸入 1 到 4 之間的數字'
    ;;
esac

  

函數

funWithParam(){
    echo "第一個參數為 $1 !"
    echo "第二個參數為 $2 !"
    echo "第十個參數為 $10 !"
    echo "第十個參數為 ${10} !"
    echo "第十一個參數為 ${11} !"
    echo "參數總數有 $# 個!"
    echo "作為一個字元串輸出所有參數 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

 


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

-Advertisement-
Play Games
更多相關文章
  • 在本機遠程連接遠程Oracle服務的時候,寫瞭如下檢索語句 select * from sys_employee 結果集中出現了中文亂碼,但是遠程伺服器本身的PL/SQL檢索出來沒有問題 解決方案: 步驟一: select * from v$nls_parameters 獲取執行結果 步驟二:SEL ...
  • 上文介紹了Sphinx的工作原理,關於如何安裝的文章在網上有很多,筆者就不再覆述了,現在繼續講解Sphinx的配置文件,讓Sphinx工作起來。 數據源配置 先來看一份數據源的配置文件示例: 其中 source後面跟著的是數據源的名字,後面做索引的時候會用到; type:數據源類型,可以為MySQL ...
  • 第一天 SQL查詢語句 CMD——SQLPLUS 賬號 soctt 密碼 tiger,輸入完成後進入SQL資料庫,如圖顯示即連接成功。 連接成功後 ,我們首先設置一下基本界面, --設置 每列顯示的字元數 set LINES 1000;set pages 100; --清屏host cls SQL語 ...
  • 查看nginx編譯時參數的設定 使用nginx -V命令查看 可以使用nginx -h命令查看命令幫助 配置文件中將worker process綁定到cpu的特定內核上, vim /etc/nginx/nginx.conf 註意worker_cpu_affinity這個參數是對cpu多核的支持,上面 ...
  • 該過程一共分為四步: 1.下載內核:我下載的是3.13.11這個版本的內核! 2.解壓內核:我將其解壓/home/jello/Downloads/linux-3.13.11目錄下!下文將會基於此目錄編譯內核。 3.開始為編譯內核做準備: a.在terminal下麵進入目錄:cd /home/jell ...
  • 簡介: 單獨整理一下 Zabbix Agent 。 1、安裝包選擇 下載地址:http://www.zabbix.com/download.php 這裡有兩種源碼包,一種是安裝 Zabbix Server 的包,可以通過指定參數 --enable-agent 的方式安裝 Agent 一種是安裝 Za ...
  • 簡介: 如何使用 Zabbix 監控 Nginx 狀態 ? 1、獲取 Nginx 狀態( HTTP Stub Status ) ## 查看編譯時有沒有加入狀態監控模塊,如果沒有需要單獨載入 2、配置 nginx.conf ## 在虛擬主機 server {} 中加入上面配置,也可以單獨定義一個專門用 ...
  • 1.開啟關閉伺服器(即時生效): service iptasbles start service iptasbles stop 1.開啟關閉伺服器(即時生效): service iptasbles start service iptasbles stop 2.在開啟了防火牆時,做如下設置,開啟相關端 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...