欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1.特殊位置變量 $n

  • $n:表示傳遞給腳本或函數(shù)的第 n 個(gè)參數(shù)。
  • $1:第一個(gè)參數(shù)
  • $2:第二個(gè)參數(shù)
  • ...
  • $9:第九個(gè)參數(shù)
  • 超過(guò) 9 個(gè)參數(shù)時(shí),需要用 {},例如 ${10} 表示第十個(gè)參數(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)使用相對(duì)路徑調(diào)用腳本時(shí),dirname $0 的結(jié)果也是相對(duì)路徑
  • 相對(duì)路徑:如果你通過(guò)相對(duì)路徑調(diào)用腳本,比如 ./script.sh,那么 dirname "$0" 會(huì)返回 .,表示當(dāng)前目錄。
  • 絕對(duì)路徑:如果通過(guò)絕對(duì)路徑調(diào)用腳本,dirname "$0" 會(huì)返回腳本所在的絕對(duì)目錄。

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ù)的個(gè)數(shù)。

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

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

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

4.1 $*

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

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

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

4.2 $@

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

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

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

加上雙引號(hào)時(shí),"$@" 會(huì)讓每個(gè)參數(shù)保持獨(dú)立,即使參數(shù)中有空格,也不會(huì)被拆開(kāi)。

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

5.shift 命令

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

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

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

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

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

相關(guān)文章

  • Shell腳本的條件測(cè)試和if條件語(yǔ)句使用方法

    Shell腳本的條件測(cè)試和if條件語(yǔ)句使用方法

    這篇文章主要介紹了Shell腳本的條件測(cè)試和if條件語(yǔ)句使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • shell 字符串操作(長(zhǎng)度,查找,替換)詳解

    shell 字符串操作(長(zhǎng)度,查找,替換)詳解

    在做shell批處理程序時(shí)候,經(jīng)常會(huì)涉及到字符串相關(guān)操作。有很多命令語(yǔ)句,如:awk,sed都可以做字符串各種操作。其實(shí)shell內(nèi)置一系列操作符號(hào),可以達(dá)到類似效果,大家知道,使用內(nèi)部操作符會(huì)省略啟動(dòng)外部程序等時(shí)間,因此速度會(huì)非常的快
    2012-09-09
  • Linux啟動(dòng)過(guò)程詳細(xì)介紹

    Linux啟動(dòng)過(guò)程詳細(xì)介紹

    這篇文章主要介紹了Linux啟動(dòng)過(guò)程詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Shell中的循環(huán)語(yǔ)句for、while、until實(shí)例講解

    Shell中的循環(huán)語(yǔ)句for、while、until實(shí)例講解

    這篇文章主要介紹了Shell中的循環(huán)語(yǔ)句for、while、until實(shí)例講解,簡(jiǎn)單清晰明了,非常不錯(cuò)的教程,需要的朋友可以參考下
    2014-06-06
  • linux啟動(dòng)級(jí)別的含義(init 0-6)

    linux啟動(dòng)級(jí)別的含義(init 0-6)

    這篇文章主要介紹了linux啟動(dòng)級(jí)別的含義(init 0-6),需要的朋友可以參考下
    2014-02-02
  • linux 查看端口占用命令實(shí)例詳解

    linux 查看端口占用命令實(shí)例詳解

    這篇文章主要介紹了 linux 查看端口占用命令實(shí)例詳解的相關(guān)資料,教大家怎樣查看系統(tǒng)端口占用情況,需要的朋友可以參考下
    2017-07-07
  • Linux下的fdisk指令用法場(chǎng)景分析

    Linux下的fdisk指令用法場(chǎng)景分析

    在Linux系統(tǒng)中,對(duì)磁盤進(jìn)行分區(qū)是管理和利用磁盤空間的重要任務(wù)之一,本篇將以通俗易懂的方式,詳細(xì)介紹fdisk指令的前世今生、功能、用法和應(yīng)用場(chǎng)景,幫助讀者全面了解fdisk指令,并掌握其在磁盤管理和問(wèn)題排查方面的應(yīng)用,需要的朋友可以參考下
    2024-01-01
  • linux系統(tǒng)下用.sh文件執(zhí)行python命令的方法

    linux系統(tǒng)下用.sh文件執(zhí)行python命令的方法

    這篇文章主要給大家介紹了關(guān)于linux系統(tǒng)下用.sh文件執(zhí)行python命令的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-07-07
  • linux 中g(shù)rep 匹配制表符 和 換行符的命令

    linux 中g(shù)rep 匹配制表符 和 換行符的命令

    這篇文章主要介紹了linux 中g(shù)rep 匹配制表符 和 換行符的命令,需要的朋友可以參考下
    2018-07-07
  • 使用Systemctl列出Linux中所有服務(wù)的操作步驟

    使用Systemctl列出Linux中所有服務(wù)的操作步驟

    在 Linux 系統(tǒng)中,Systemctl 是一個(gè)強(qiáng)大的工具,用于管理系統(tǒng)的服務(wù)和守護(hù)進(jìn)程,它可以讓用戶輕松地啟動(dòng)、停止、重啟以及管理各種系統(tǒng)服務(wù),本文將詳細(xì)介紹如何使用 Systemctl 來(lái)列出 Linux 中的所有服務(wù),需要的朋友可以參考下
    2024-05-05

最新評(píng)論