Shell 传递参数
在 Shell 编程中,我们可以通过特殊变量来获取命令行传递的参数。脚本内获取参数的格式为 $n
,n
代表一个数字。
例如,执行脚本时传递参数 ./script.sh arg1 arg2 arg3
,在脚本中可以通过 $1
获取到 arg1
,$2
获取到 arg2
,以此类推。
✅ 基本参数变量:
$0
:脚本自身的名称$1
-$9
:依次表示第1至第9个传入参数${10}
-${n}
:扩展表示第10个及之后的参数$#
:已传递的参数总数$*
:将所有参数合并为单个字符串$@
:将每个参数作为独立的字符串处理$?
:上一命令执行后的退出状态码$$
:当前 Shell 进程的 ID (PID)
Shell 使用实例
✅ 以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名(包含文件路径):
实例代码
复制
#!/bin/bash
# author:开创者教程
# url:www.kaicz.com
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
执行脚本,输出结果如下所示:
$ chmod +x example.sh
$ ./example.sh hello world 123
Shell 传递参数实例!
执行的文件名: ./example.sh
第一个参数为:hello
第二个参数为:world
第三个参数为: 123
✅ 检查参数是否存在
实例代码
复制
#!/bin/bash
if [ $# -eq 0 ]; then
echo "错误:请提供参数"
exit 1
fi
if [ -z "$1" ]; then
echo "第一个参数为空"
fi
执行脚本,输出结果如下所示:
# 情况1:不提供任何参数场景
$ ./script.sh
错误:请提供参数
# 情况2:提供空字符串作为第一个参数场景
$ ./script.sh ""
第一个参数为空
# 情况3:提供非空参数场景
$ ./script.sh "hello"
# 没有输出,正常退出
# 情况4:提供多个参数场景
$ ./script.sh "hello" "world"
# 没有输出,正常退出
✅ 文件备份脚本
实例代码
复制
#!/bin/bash
if [ $# -lt 2 ]; then
echo "用法: $0 源文件 目标目录 [备份前缀]"
exit 1
fi
source_file=$1
target_dir=$2
backup_prefix=${3:-"backup"}
if [ ! -f "$source_file" ]; then
echo "错误: 源文件不存在"
exit 1
fi
if [ ! -d "$target_dir" ]; then
echo "错误: 目标目录不存在"
exit 1
fi
timestamp=$(date +%Y%m%d_%H%M%S)
backup_file="${target_dir}/${backup_prefix}_${timestamp}.tar.gz"
tar -czf "$backup_file" "$source_file"
echo "备份完成: $backup_file"
评论区 0
发表评论
教程介绍
Linux 是一个开源、稳定、多用途的操作系统内核,广泛应用于服务器、云计算和嵌入式设备。
26
章节
28
阅读
0
评论
反馈提交成功
感谢您的反馈,我们将尽快处理您的反馈