Bash是一个功能强悍的linux用户环境变量,提供了各类特殊变量,可以用于操作和控制的行为。这种变量提供了有关运行环境的基本信息,包括行参数、当前进程ID和先前执行的状态。
在本文中,我们将提供所有Bash特殊变量的深入手册,包括它们的使用示例和常见的问题防止技巧。
“$0”–正在执行的脚本的名称。”$1-$9”–前九个行参数。“$#”–命令行参数的数目。”$*“–所有命令行参数作为单个字符串。”$@”–所有命令行参数作为一个链表。“$?”–上次执行的命令的退出状态。”$$“–当前shell的进程ID。”$!“–最后一个后台命令的进程ID。
让我们详尽讨论特殊变量并提供示例。
$0–正在执行的脚本的名称
在Bash中,$0是一个特殊参数,它保存当前正在执行的脚本或Shell的名称。它也被称为脚本的“名称”或“零号参数”。
#!/bin/bash
# Linux迷 www.linuxmi.com
echo "当前运行的脚本是: $0"
比如,假定您有一个名为“”的脚本linux伊甸园,您想从任何目录运行它。这么,您可以使用$0变量来确定正在执行的脚本的名称:
#!/bin/bash
# Linux迷 www.linuxmi.com
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo "脚本正在从 $SCRIPT_DIR 运行"
$1,$2,…,$9–命令行参数
$1,$2,…,$9变量包含传递给脚本的前九个命令行参数。这种变量对于创建接受用户输入的shell脚本特别有用。
比如,假定您有一个名为“greet.sh”的脚本,它将一个名叫做为其第一个命令行参数。在这些情况下,您可以使用$1变量来检索名称,之后在脚本的输出中使用它。
#!/bin/bash
# Linux迷 www.linuxmi.com
echo "Hello, $1!"
假如脚本须要访问超过九个命令行参数,则可以使用${10}、${11}linux用户环境变量,…,${N}变量来检索它们。这种变量可以与shift命令一起使用,以批处理方法处理命令行参数。确保变量用{}括上去。
$#–命令行参数的数目
$#变量包含传递给脚本的命令行参数数目。此变量对于创建验证用户输入的shell脚本特别有用。
比如,假定您有一个名为“linuxmi.sh”的脚本,须要两个命令行参数。在这些情况下,您可以使用$#变量来确保提供了正确数目的参数。
#!/bin/bash
# Linux迷 www.linuxmi.com
if [[ $# -ne 2 ]]
then
echo "Usage: linuxmi.sh [username] [password]"
exit 1
fi
$*–将所有命令行参数作为一个字符串
$*变量包含作为单个字符串传递给脚本的所有命令行参数。该变量对于须要操作整个命令行字符串的Shell脚本特别有用。
比如,假定您有一个名为“join.sh”的脚本,用于联接作为命令行参数提供的两个字符串。在这些情况下,您可以使用$*变量来联接这种字符串。
#!/bin/bash
# Linux迷 www.linuxmi.com
joined="$*
$@–将所有命令行参数作为形参
$@变量包含作为形参传递给脚本的所有命令行参数。该变量对于须要操作单个命令行参数的Shell脚本特别有用。
比如,假定您有一个名为“list.sh”的脚本,用于列举作为命令行参数提供的目录中的所有文件。在这些情况下,您可以使用$@变量来迭代每位目录名称并列举该目录中的文件。
#!/bin/bash
# Linux迷 www.linuxmi.com
for directory in "$@"
do
echo "正在列出中的文件 $directory:"
ls -l $directory
done
$?–最近执行命令的退出状态
$?变量包含近来执行命令的退出状态。该变量对于须要处理错误或按照命令的成功或失败采取不同操作的Shell脚本特别有用。
比如,假定您有一个名为“create-file.sh”的脚本,用于创建一个文件并返回表示成功或失败的退出状态。在这些情况下,您可以使用$?变量来检测退出状态并采取适当的操作。
#!/bin/bash
# Linux迷 www.linuxmi.com
touch linuximi.txt
if [[ $? -eq 0 ]]
then
echo "文件创建成功"
else
echo "创建文件时出错"
fi
$$变量包含当前脚本的进程ID
该变量对于须要管理多个进程或创建惟一文件名的Shell脚本特别有用。诸如,假定您有一个名为“log.sh”的脚本,用于记录信息到一个基于进程ID的惟一文件名的文件中。在这些情况下,您可以使用$$变量来世成一个惟一的文件名。
#!/bin/bash
# Linux迷 www.linuxmi.com
LOG_FILE="log_$$.txt"
echo "正在记录到文件 $LOG_FILE"
$!–最近后台命令的进程ID
$!变量包含脚本执行的近来后台命令的进程ID。该变量对于须要管理多个进程或监视长时间运行的命令的Shell脚本特别有用。
比如,假定您有一个名为“”的脚本,用于在后台运行一个命令并记录其进度。在这些情况下,您可以使用$!变量来监视命令的进度。
#!/bin/bash
# Linux迷 www.linuxmi.com
mycommand &
pid=$!
while ps -p $pid >/dev/null; do
echo "命令仍在运行"
sleep 1
done
echo "命令已完成"
总结
Bash特殊变量提供了有关脚本运行环境的重要信息。这种变量使您能否创建愈发灵活、健壮和不容易出现异常或崩溃的Shell脚本。通过把握这种变量的用法linux培训班,您可以将自己的Shell脚本技能提高到更高的水平。
本文原创地址://gulass.cn/btsbldjbyxhj.html编辑:刘遄,审核员:暂无