自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Bash 特殊變量($0,$?,$#,$@,$$,$*)

系統(tǒng)
在本文中,我們將提供所有 Bash 特殊變量的深入指南,包括它們的使用示例和常見的問題避免方法。

Bash 是一個(gè)功能強(qiáng)大的 Shell,提供了各種特殊變量,可以用于操作和控制腳本的行為。這些變量提供了有關(guān)腳本運(yùn)行環(huán)境的基本信息,包括命令行參數(shù)、當(dāng)前進(jìn)程 ID 和上次執(zhí)行命令的狀態(tài)。

在本文中,我們將提供所有 Bash 特殊變量的深入指南,包括它們的使用示例和常見的問題避免方法。

讓我們詳細(xì)討論特殊變量并提供示例。

$0 – 正在執(zhí)行的腳本的名稱

在 Bash 中,$0 是一個(gè)特殊參數(shù),它保存當(dāng)前正在執(zhí)行的腳本或Shell的名稱。它也被稱為腳本的“名稱”或“零號(hào)參數(shù)”。

#!/bin/bash
# Linux迷 www.linuxmi.com
echo "當(dāng)前運(yùn)行的腳本是: $0"

例如,假設(shè)您有一個(gè)名為“www.linuxmi.com.sh”的腳本,您想從任何目錄運(yùn)行它。那么,您可以使用 $0 變量來確定正在執(zhí)行的腳本的名稱:

#!/bin/bash
# Linux迷 www.linuxmi.com
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo "腳本正在從 $SCRIPT_DIR 運(yùn)行"

$1,$2,…,$9 – 命令行參數(shù)

$1,$2,…,$9 變量包含傳遞給腳本的前九個(gè)命令行參數(shù)。這些變量對于創(chuàng)建接受用戶輸入的 shell 腳本非常有用。

例如,假設(shè)您有一個(gè)名為“??greet.sh??”的腳本,它將一個(gè)名稱作為其第一個(gè)命令行參數(shù)。在這種情況下,您可以使用 $1 變量來檢索名稱,然后在腳本的輸出中使用它。

#!/bin/bash
# Linux迷 www.linuxmi.com
echo "Hello, $1!"

如果腳本需要訪問超過九個(gè)命令行參數(shù),則可以使用 ${10}、${11},…,${N} 變量來檢索它們。這些變量可以與 shift 命令一起使用,以批處理方式處理命令行參數(shù)。確保變量用 {} 括起來。

$# – 命令行參數(shù)的數(shù)量

$# 變量包含傳遞給腳本的命令行參數(shù)數(shù)量。此變量對于創(chuàng)建驗(yàn)證用戶輸入的 shell 腳本非常有用。

例如,假設(shè)您有一個(gè)名為“??linuxmi.sh??”的腳本,需要兩個(gè)命令行參數(shù)。在這種情況下,您可以使用 $# 變量來確保提供了正確數(shù)量的參數(shù)。

#!/bin/bash
# Linux迷 www.linuxmi.com
if [[ $# -ne 2 ]]
then
echo "Usage: linuxmi.sh [username] [password]"
exit 1
fi

$* – 將所有命令行參數(shù)作為一個(gè)字符串

$* 變量包含作為單個(gè)字符串傳遞給腳本的所有命令行參數(shù)。該變量對于需要操作整個(gè)命令行字符串的Shell腳本非常有用。

例如,假設(shè)您有一個(gè)名為“join.sh”的腳本,用于連接作為命令行參數(shù)提供的兩個(gè)字符串。在這種情況下,您可以使用$*變量來連接這些字符串。

#!/bin/bash
# Linux迷 www.linuxmi.com
joined="$*

$@ – 將所有命令行參數(shù)作為數(shù)組

$@ 變量包含作為數(shù)組傳遞給腳本的所有命令行參數(shù)。該變量對于需要操作單個(gè)命令行參數(shù)的Shell腳本非常有用。

例如,假設(shè)您有一個(gè)名為“l(fā)ist.sh”的腳本,用于列出作為命令行參數(shù)提供的目錄中的所有文件。在這種情況下,您可以使用$@變量來迭代每個(gè)目錄名稱并列出該目錄中的文件。

#!/bin/bash
# Linux迷 www.linuxmi.com
for directory in "$@"
do
echo "正在列出中的文件 $directory:"
ls -l $directory
done

$? – 最近執(zhí)行命令的退出狀態(tài)

$? 變量包含最近執(zhí)行命令的退出狀態(tài)。該變量對于需要處理錯(cuò)誤或根據(jù)命令的成功或失敗采取不同操作的Shell腳本非常有用。

例如,假設(shè)您有一個(gè)名為“create-file.sh”的腳本,用于創(chuàng)建一個(gè)文件并返回表示成功或失敗的退出狀態(tài)。在這種情況下,您可以使用$?變量來檢查退出狀態(tài)并采取適當(dāng)?shù)牟僮鳌?/p>

#!/bin/bash
# Linux迷 www.linuxmi.com
touch linuximi.txt
if [[ $? -eq 0 ]]
then
echo "文件創(chuàng)建成功"
else
echo "創(chuàng)建文件時(shí)出錯(cuò)"
fi

$$ 變量包含當(dāng)前腳本的進(jìn)程ID

該變量對于需要管理多個(gè)進(jìn)程或創(chuàng)建唯一文件名的Shell腳本非常有用。 例如,假設(shè)您有一個(gè)名為“l(fā)og.sh”的腳本,用于記錄信息到一個(gè)基于進(jìn)程ID的唯一文件名的文件中。在這種情況下,您可以使用$$變量來生成一個(gè)唯一的文件名。

#!/bin/bash
# Linux迷 www.linuxmi.com
LOG_FILE="log_$$.txt"
echo "正在記錄到文件 $LOG_FILE"

$! – 最近后臺(tái)命令的進(jìn)程ID

$! 變量包含腳本執(zhí)行的最近后臺(tái)命令的進(jìn)程ID。該變量對于需要管理多個(gè)進(jìn)程或監(jiān)視長時(shí)間運(yùn)行的命令的Shell腳本非常有用。

例如,假設(shè)您有一個(gè)名為“www.linuxmi.com.sh”的腳本,用于在后臺(tái)運(yùn)行一個(gè)命令并記錄其進(jìn)度。在這種情況下,您可以使用$!變量來監(jiān)視命令的進(jìn)度。

#!/bin/bash
# Linux迷 www.linuxmi.com
mycommand &
pid=$!
while ps -p $pid >/dev/null; do
echo "命令仍在運(yùn)行"
sleep 1
done
echo "命令已完成"

總結(jié)

Bash 特殊變量提供了有關(guān)腳本運(yùn)行環(huán)境的重要信息。這些變量使您能夠創(chuàng)建更加靈活、健壯和不容易出現(xiàn)異?;虮罎⒌腟hell腳本。通過掌握這些變量的用法,您可以將自己的Shell腳本技能提升到更高的水平。

責(zé)任編輯:趙寧寧 來源: Linux迷
相關(guān)推薦

2010-07-20 12:52:26

Perl特殊變量

2023-07-12 14:13:03

BashLinux

2010-06-23 15:46:27

Linux Bash

2018-12-24 09:15:51

BashLinux環(huán)境變量

2022-11-30 07:47:00

Bash腳本

2010-06-23 17:21:30

Linux Bash

2009-12-18 14:35:01

Ruby奇特變量

2020-06-28 07:33:01

source命令BashLinux

2017-03-08 11:10:39

LinuxShell命令

2023-11-13 22:08:05

ShellLinux

2010-07-20 12:44:20

Perl特殊變量

2023-02-10 09:46:04

bash腳本變量

2022-09-22 07:31:14

Java變量計(jì)算

2022-05-09 07:08:14

LinuxBashShell

2023-01-04 10:17:19

LinuxBashshell

2015-08-10 14:37:27

LinuxBash環(huán)境變量

2022-12-13 12:55:15

Bash循環(huán)

2023-08-22 21:42:03

Bash函數(shù)

2022-12-02 14:30:24

Bash腳本數(shù)組

2023-07-20 15:37:50

Bash數(shù)組
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)