最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

shell特殊位置變量的問題小結(jié)

 更新時間:2025年01月21日 10:25:58   作者:躺不平的理查德  
這篇文章介紹了一些在Shell腳本中常用的特殊位置變量,如$n, $0, $#等,并詳細(xì)解釋了它們的功能和用法,感興趣的朋友跟隨小編一起看看吧

1.特殊位置變量 $n

  • $n:表示傳遞給腳本或函數(shù)的第 n 個參數(shù)。
  • $1:第一個參數(shù)
  • $2:第二個參數(shù)
  • ...
  • $9:第九個參數(shù)
  • 超過 9 個參數(shù)時,需要用 {},例如 ${10} 表示第十個參數(shù)。

2.特殊位置變量 $0

 $0:表示腳本的文件名或當(dāng)前命令的名稱或者腳本路徑

#!/bin/bash
echo "腳本名是:$0"
#bash myscript.sh
#腳本名是:myscript.sh

$0獲取腳本路徑

#!/bin/bash
# 使用 dirname 提取腳本目錄
script_dir=$(dirname "$0")
# 輸出腳本目錄
echo "腳本目錄是:$script_dir"

dirname $0 的作用:

  • 提取 $0 表示的腳本路徑中的目錄部分。
  • 當(dāng)使用相對路徑調(diào)用腳本時,dirname $0 的結(jié)果也是相對路徑
  • 相對路徑:如果你通過相對路徑調(diào)用腳本,比如 ./script.sh,那么 dirname "$0" 會返回 .,表示當(dāng)前目錄。
  • 絕對路徑:如果通過絕對路徑調(diào)用腳本,dirname "$0" 會返回腳本所在的絕對目錄。

basename $0作用:

  • 提取路徑中的文件名部分。
  • $0 的值中移除路徑部分,只返回文件名。
#!/bin/bash
# 獲取腳本的完整路徑
#script_path=$(readlink -f "$0")
# 提取目錄和名稱
script_dir=$(dirname "$0")
script_name=$(basename "$0")
echo "腳本目錄是:$script_dir"
echo "腳本名稱是:$script_name"

3.特殊位置變量$ #

$# 表示傳遞給腳本的參數(shù)數(shù)量,即位置參數(shù)的個數(shù)。

#!/bin/bash
echo "傳遞給腳本的參數(shù)個數(shù)是:$#"
#bash script.sh 1 2 3
#傳遞給腳本的參數(shù)個數(shù)是:3
#bash script.sh "1 2" 3
#傳遞給腳本的參數(shù)個數(shù)是:2
#bash script.sh {a..z}
#傳遞給腳本的參數(shù)個數(shù)是:26

4.特殊位置變量$*/$@

  • $*:將所有參數(shù)視為一個單一的字符串。
  • $@:將每個參數(shù)視為獨立的字符串,特別是當(dāng)參數(shù)包含空格時,區(qū)別更加明顯。

4.1 $*

  • $* 將所有傳遞給腳本的參數(shù)視為一個單一的字符串,并且各個參數(shù)之間會用空格分隔。
  • 沒有雙引號時,$* 會將所有參數(shù)當(dāng)作一個單一的字符串處理,但它會按照空格拆分參數(shù)
#!/bin/bash
echo "使用 \$* 時:"
for i in $*; do
  echo "[$i]"
done
bash test.sh "Hello world" arg2 "this is" arg4
$* 會將所有參數(shù)當(dāng)作一個單一的字符串處理,但它會按照空格拆分參數(shù)。因此,"Hello world" 被拆成了 Hello 和 world,"this is" 被拆成了 this 和 is。
使用 $* 時:
[Hello]
[world]
[arg2]
[this]
[is]
[arg4]

加上雙引號時,"$*" 會把所有的參數(shù)當(dāng)成一個整體,但依然會將參數(shù)之間用一個空格隔開。

#!/bin/bash
echo "使用 \"\$*\" 時:"
for i in "$*"; do
  echo "[$i]"
done
使用 "$*" 時:
[Hello world arg2 this is arg4]
當(dāng)加上雙引號時,"$*" 將所有參數(shù)當(dāng)作一個完整的單一字符串來處理,并用空格分隔。這樣,整個輸入變成了一個大字符串 Hello world arg2 this is arg4。

4.2 $@

$@ 也表示所有傳遞給腳本的參數(shù),但它會將每個參數(shù)作為一個獨立的字符串,尤其是當(dāng)參數(shù)包含空格時,會將每個參數(shù)保留為單獨的字符串。

沒有雙引號時,$@ 會和 $* 相似地將每個參數(shù)當(dāng)作一個獨立的部分,參數(shù)之間也會用空格分隔。與$*不加雙引號行為相同

#!/bin/bash
echo "使用 \$@ 時:"
for i in $@; do
  echo "[$i]"
done
#輸出
使用 $@ 時:
[Hello]
[world]
[arg2]
[this]
[is]
[arg4]

加上雙引號時,"$@" 會讓每個參數(shù)保持獨立,即使參數(shù)中有空格,也不會被拆開。

#!/bin/bash
echo "使用 \"\$@\" 時:"
for i in "$@"; do
  echo "[$i]"
done
使用 "$@" 時:
[Hello world]
[arg2]
[this is]
[arg4]
當(dāng)加上雙引號時,"$@" 會保留每個參數(shù)作為獨立的字符串。即使參數(shù)中包含空格(如 "Hello world"),它也會將整個 "Hello world" 作為一個參數(shù)處理,不會拆分。每個參數(shù)都保持獨立性。

5.shift 命令

shift 用來將位置參數(shù)向左移動,參數(shù)的數(shù)量會減少,原來的 $1 會被移除,新的 $2 變成 $1,依此類推。

#!/bin/bash
# 打印所有傳遞的參數(shù)
echo "原始參數(shù):$@"
# 移動參數(shù)
shift
# 打印移位后的參數(shù)
echo "移位后的參數(shù):$@"

可以使用 shift 多次,以進(jìn)一步移動參數(shù):

#!/bin/bash
shift 2
echo "移位兩次后的參數(shù):$@"
bash script.sh arg1 arg2 arg3 arg4

到此這篇關(guān)于shell特殊位置變量的文章就介紹到這了,更多相關(guān)shell特殊位置變量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux下rm誤刪除文件的三種恢復(fù)方法

    Linux下rm誤刪除文件的三種恢復(fù)方法

    一下午寫的程序就被rm掉了,幸好只是一個文件,第二天很快又重新寫了一遍。但是很多人可能就不像我這么幸運(yùn)了,本文收集了一些在Linux下恢復(fù)rm刪除的文件的方法,需要的朋友可以參考下
    2022-12-12
  • linux shell發(fā)送Email郵件的方法詳解

    linux shell發(fā)送Email郵件的方法詳解

    這篇文章主要介紹了linux shell發(fā)送Email郵件的方法,文中介紹的內(nèi)容包括發(fā)送一封簡單的郵件、郵件的格式、郵件標(biāo)題使用中文以及郵件內(nèi)容使用html等相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • CentOS下對shell腳本加密的二種方法

    CentOS下對shell腳本加密的二種方法

    這篇文章主要介紹了CentOS下對shell腳本加密的二種方法,本文介紹了gzexe、shc兩款加密工具,并分別講解了加密方法,需要的朋友可以參考下
    2014-12-12
  • Shell中實現(xiàn)整數(shù)自增的幾種方法示例

    Shell中實現(xiàn)整數(shù)自增的幾種方法示例

    Linux Shell中寫循環(huán)時,常常要用到變量的自增,下面這篇文章主要給大家分享了關(guān)于Shell中實現(xiàn)整數(shù)變量自增的幾種方法,包括declare -i來聲明、使用let命令、使用(())以及使用expr命令等等方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • Bash Shell中的select命令簡單使用示例

    Bash Shell中的select命令簡單使用示例

    這篇文章主要介紹了Bash Shell中的select命令簡單使用示例,通常用于流程控制功能的實現(xiàn),需要的朋友可以參考下
    2015-07-07
  • Shell腳本把文件從GBK轉(zhuǎn)為UTF-8編碼

    Shell腳本把文件從GBK轉(zhuǎn)為UTF-8編碼

    這篇文章主要介紹了Shell腳本把文件從GBK轉(zhuǎn)為UTF-8編碼,需要的朋友可以參考下
    2014-06-06
  • linux shell實現(xiàn)判斷輸入的數(shù)字是否為合理的浮點數(shù)

    linux shell實現(xiàn)判斷輸入的數(shù)字是否為合理的浮點數(shù)

    這篇文章主要介紹了linux shell實現(xiàn)判斷輸入的數(shù)字是否為合理的浮點數(shù),需要的朋友可以參考下
    2016-08-08
  • Shell腳本實現(xiàn)MySQL、Oracle、PostgreSQL數(shù)據(jù)庫備份

    Shell腳本實現(xiàn)MySQL、Oracle、PostgreSQL數(shù)據(jù)庫備份

    本文主要介紹了Shell腳本實現(xiàn)MySQL、Oracle、PostgreSQL數(shù)據(jù)庫備份,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • linux生成(加載)動態(tài)庫靜態(tài)庫和加載示例方法

    linux生成(加載)動態(tài)庫靜態(tài)庫和加載示例方法

    這篇文章主要介紹了linux生成(加載)動態(tài)庫靜態(tài)庫示例方法,大家參考使用
    2013-11-11
  • Shell編程筆記之正則表達(dá)式與文本處理器詳解

    Shell編程筆記之正則表達(dá)式與文本處理器詳解

    這篇文章主要介紹了Shell編程筆記之正則表達(dá)式與文本處理器的相關(guān)資料,正則表達(dá)式用于精準(zhǔn)匹配字符串,而文本處理器如grep、sed、awk則用于高效處理文本,通過學(xué)習(xí)正則表達(dá)式的基礎(chǔ)和擴(kuò)展表達(dá)式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04

最新評論

吴桥县| 阿巴嘎旗| 瓦房店市| 宝山区| 景洪市| 海晏县| 罗源县| 仙居县| 周至县| 沈阳市| 郑州市| 廉江市| 景泰县| 民丰县| 西盟| 威海市| 武定县| 鄂托克旗| 双城市| 乳山市| 察雅县| 德阳市| 定兴县| 宝山区| 五河县| 抚顺市| 建阳市| 平湖市| 六安市| 肥乡县| 措美县| 瑞昌市| 昆山市| 大荔县| 栾川县| 永安市| 元阳县| 封开县| 云南省| 湟源县| 清涧县|