Shell傳參講解

Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux/Unix 系統的橋樑。Shell 能夠解析用戶輸入的命令,並且執行這些命令。其中,Shell 傳參就是用戶在執行 Shell 命令時,將參數傳遞給 Shell 腳本,以便根據參數的不同,執行不同的操作。在本文中,我們將從多個方面詳細介紹 Shell 傳參。

一、Shell傳參基礎

Shell傳參是一種向Shell腳本(Shell Script)傳遞外部參數的方法, 也就是把執行Shell腳本時的參數傳遞給腳本中的變量, 以便在後續的程序執行過程中使用。

在 Shell 編程中,為了讓腳本更加靈活,我們常常需要在命令行上傳遞參數給 Shell 腳本。在 Shell 腳本中,我們可以通過$0$1$2 等參數來獲取不同位置的參數,其中 $0 表示腳本的名字,$1表示第一個參數,以此類推。

#!/bin/sh
echo "傳遞到腳本的參數個數為:$#"
echo "傳遞到腳本的參數為:$@"
echo "腳本運行的當前進程ID為:$$"
echo "命令最後執行的後台進程ID為:$!"
echo "命令行中傳遞的參數分別是:$1 $2 $3"

當我們執行sh test.sh arg1 arg2時,上述腳本的輸出結果如下:

傳遞到腳本的參數個數為:2
傳遞到腳本的參數為:arg1 arg2
腳本運行的當前進程ID為:465
命令最後執行的後台進程ID為:
命令行中傳遞的參數分別是:arg1 arg2 

二、Shell傳參與引用

Shell 腳本中的引用是非常常見的,例如在 Bash 中使用變量時,需要對變量名進行引用。在 Shell 腳本中,參數也需要進行引用,以便在腳本中正確地解釋這些參數。在 Shell 編程中,我們通常使用 $1、$2、$3 等形式來傳遞參數,其中 $0 表示腳本的名稱。我們可以使用雙引號或者單引號來引用參數。

單引號引用:單引號會將引用中的所有字符轉義,不會對其中的任何特殊字符進行處理。

#!/bin/sh
echo '$0 和 $1:'"$0 $1"
echo '$$ 和 $!:'"$$ $!"

執行結果如下:

$0 和 $1:bash /home/user/test/test.sh
$$ 和 $!:637 0

雙引號引用:雙引號可以將參數中的特殊字符進行處理,特殊字符的值可以被其他值替換。

#!/bin/sh
echo "$0 和 $1:$0 $1"
echo "\$${0}: ${$0}"

執行結果如下:

和 : 
$test: 

三、Shell傳參帶空格

在 Shell 腳本中,有時候我們需要使用帶有空格的參數,為了正確地傳遞空格,我們可以使用雙引號或單引號來引用參數。

#!/bin/sh
echo "帶有雙引號的參數:""$1""""
echo '帶有單引號的參數:'"$1"'

執行結果如下:

帶有雙引號的參數:測試 參數1
帶有單引號的參數:測試 參數1

四、Shell循環

在 Shell 編程中,循環語句與其他編程語言相似,它可以用於重複執行一組命令。循環語句可分為 for 循環和 while 循環兩種,其中循環控制語句為 break 和 continue。

for 循環:使用 for 循環可以執行一個代碼塊一定次數的操作。

#!/bin/sh
for i in {1..5}
do
   echo "循環次數為 $i"
done

執行結果如下:

循環次數為 1
循環次數為 2
循環次數為 3
循環次數為 4
循環次數為 5

while 循環:使用 while 循環可以執行一個代碼塊,直到指定的條件為真時才停止循環。

#!/bin/sh
num=1
while [ $num -le 5 ]
do
   echo "循環次數為 $num"
   num=$((num+1))
done

執行結果如下:

循環次數為 1
循環次數為 2
循環次數為 3
循環次數為 4
循環次數為 5

五、Shell 定義變量

在 Shell 編程中,變量保留了不同數據類型的值,包括整數、浮點數、字符串等。

定義一個整數類型的變量:在 Shell 編程中,我們首先聲明變量名,然後將變量賦值。

#!/bin/sh
a=51
echo "a 的值為 $a"

執行結果如下:

a 的值為 51

定義一個字符串類型的變量:在 Shell 編程中,我們可以使用引號來定義字符串,包括雙引號(“”)和單引號(”)。

#!/bin/sh
str="hello world"
echo "str 的值為 $str"

執行結果如下:

str 的值為 hello world

六、Shell傳參腳本

在 Shell 腳本中,需要傳遞參數時,我們可以使用 $1、$2、$3 等形式的參數來獲取腳本的參數值。下面是一個示例,演示如何處理 Shell 腳本傳遞的參數。

#!/bin/sh
echo "第一個參數:$1"
echo "第二個參數:$2"
echo "第三個參數:$3"

執行結果如下:

第一個參數:param1
第二個參數:param2
第三個參數:

七、Shell傳參數到sql

在 Shell 腳本中,我們可以將參數傳遞給 SQL 查詢,以便查詢結果。

#!/bin/sh
DB_NAME=test
TABLE_NAME=test_table
QUERY=$1
sqlplus -s /nolog <<EOF
connect username/password@db
use $DB_NAME;
select * from $TABLE_NAME where column1='$QUERY';
exit;
EOF

執行結果如下:

+-------+-------+
|column1|column2|
+-------+-------+
|test   |1      |
|test   |2      |
+-------+-------+

八、Shell傳參保留引號

在 Shell 腳本中傳遞參數時,如果參數中包含引號,我們可以使用雙引號或單引號進行引用,以保留引號的內容。

使用雙引號保留引號:

#!/bin/sh
echo "參數為:\"$1\""

執行結果如下:

參數為:'"引號內容"'

使用單引號保留引號:

#!/bin/sh
echo '參數為:'"'$1'"

執行結果如下:

參數為:'"引號內容"'

總結

在 Shell 編程中,參數傳遞是非常重要的。通過本文的介紹,相信大家對 Shell 參數傳遞有了更加深入的了解。在實際編程中,我們需要根據實際情況選擇不同的傳參方法,以實現更加靈活的編程。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/205913.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-07 17:48
下一篇 2024-12-07 17:48

相關推薦

  • Shell腳本與Python腳本的區別

    本文將從多個方面對Shell腳本與Python腳本的區別做詳細的闡述。 一、語法差異 Shell腳本和Python腳本的語法存在明顯差異。 Shell腳本是一種基於字符命令行的語言…

    編程 2025-04-29
  • Shell嵌入式介紹及應用

    本文將介紹Shell嵌入式的概念、特點和應用,並針對嵌入式系統開發中的一些問題,給出相應的解決方案。 一、Shell嵌入式概念 Shell嵌入式是一種將Shell(命令行解釋器)嵌…

    編程 2025-04-28
  • Python Shell保存PY文件的方法

    Python Shell是一種交互式編程環境,它能夠快速驗證代碼實現。有時,為了將代碼保存到文件中,我們需要了解如何在Python Shell中保存Python文件。本文將從多個方…

    編程 2025-04-27
  • Shell和Python哪個難學

    Python比Shell更難學習。 一、語法複雜度 Shell腳本是一種受眾較為廣泛的編程語言,它的語法相對於Python來說要簡單很多,很多基本的語句都只需要幾個字符就能表示出來…

    編程 2025-04-27
  • Shell對比字符串

    本文將從多個方面介紹Shell對比字符串的方法和技巧。 一、基本操作 Shell的對比字符串操作主要使用test或者[ ]操作符,其中test是[ ]的等價形式。可以使用man t…

    編程 2025-04-27
  • 使用Shell傳參給Gradle

    本文將從多個方面詳細介紹如何使用Shell傳參給Gradle,並且提供完整的代碼示例。 一、傳參的原理 在使用Gradle時,我們可以通過命令行直接傳參,比如: gradle as…

    編程 2025-04-27
  • Shell腳本中的if語句

    shell腳本是Linux下最常用的腳本之一,在編寫shell腳本過程中,if語句是最常用的控制語句之一。if語句可以將程序的流程進行控制,使得程序在不同情況下可以進行不同的操作,…

    編程 2025-04-25
  • Shell教程

    一、什麼是Shell? Shell是一種命令語言,是用戶與操作系統內核進行交互的接口。它通過讀取用戶輸入的命令並將其轉換為操作系統可以執行的指令完成用戶和操作系統之間的交互。She…

    編程 2025-04-25
  • Shell字符串替換詳解

    一、前言 在Shell編程中,字符串替換是一個基礎而又重要的操作。它常用於數據清洗、格式化等各種場景。在本文中,我們將從多個方面對Shell字符串替換做詳細的闡述。 二、基本操作 …

    編程 2025-04-24
  • Shell獲取當前日期

    Shell是一種程序設計語言,在Linux或Unix系統上使用頻率比較高。它含有大量的工具、命令和腳本,可以在命令行下完成許多任務,包括獲取當前日期。本文將介紹從多個方面獲取當前日…

    編程 2025-04-24

發表回復

登錄後才能評論