Bash 变量:export、位置参数与默认值展开验证

Bash 变量:export、位置参数与默认值展开验证

1. 用途介绍

Bash 变量保存脚本状态、参数和子进程环境。正确区分 Shell 变量、export 环境变量和函数 local,可避免脚本读取不到配置、参数被拆分或默认值误用。

2. 准备运行环境

Linux Bash,普通测试账号即可。无需 root、网络或服务端。不要直接打印生产环境 env/set,它们可能包含令牌和凭据。

3. 相关知识与注意点

• name=value 的等号两边不能有空格;value 内可以含空格,但需引号。

• export 使以后启动的子进程继承变量;子进程修改不会自动回写父进程。

• local 限定函数作用域,不等同于位置参数。

• "@" 保留各参数边界;"*" 通常按 IFS 首字符合并。

• $? 是上一条命令退出状态,0 通常成功,非0含义由命令定义,不一定是执行故障。

• $$ 在 Bash 子 Shell 环境中可能仍反映原 Shell,BASHPID 可查看当前 Bash 进程。

• {x:-word} 对未设置或空值生效;{x-word} 只对未设置生效。:= 还会赋值,:? 可报错退出非交互 Shell。

4. 实验步骤

bash 复制代码
name='hello world'
printf '%s\n' "$name"
export DEMO_VALUE='child value'
bash -c 'printf "%s\n" "$DEMO_VALUE"'
unset DEMO_VALUE
printf '%s\n' "${DEMO_VALUE:-fallback}"

位置参数示例保存为 args.sh:

bash 复制代码
#!/usr/bin/env bash
printf 'count=%s\n' "$#"
for arg in "$@"; do
    printf '<%s>\n' "$arg"
done
bash 复制代码
bash -n args.sh
bash args.sh 'a b' c

预期 count=2,分别输出 <a b> 和 <c>,不是三个参数。

5. 原实验截图

6. 验证命令

用 bash -n 检查语法,分别以未设置、空值和非空值测试默认值展开。用 declare -p DEMO_VALUE 查看单个测试变量属性,避免导出整个真实环境;执行子进程验证继承,返回父 Shell 后复查原值。上文输出仅为确定输入的预期结果,未冒充本机Linux实测。

相关推荐
电子云与长程纠缠1 小时前
UE5魂系游戏开发教程05
开发语言·学习·游戏·ui·ue5
其实防守也摸鱼1 小时前
Cylab在线靶场——CTF中的通用技能
linux·数据库·学习·算法·靶场·ctf·学习网络安全
cspttty1 小时前
2027风险管理岗准备路线:数学与应用数学如何补齐金融、SQL与Python
开发语言·python·金融
我命由我123451 小时前
Python 开发 - Python 的 pathlib
java·开发语言·后端·python·学习·java-ee·学习方法
ZYH_06012 小时前
rhcsa课程复习题
服务器·bash
toooooop82 小时前
CentOS 7 内核 3.10.0-1160.119.1 升级指南
linux·运维·centos
码少女2 小时前
Linux——UDP协议和TCP协议
linux·网络·udp·tcp
严谨的麻辣烫2 小时前
Python HTTP 连接池怎么用?从连接复用到请求异常排查
开发语言·python·http·requests·网络排查
码林鼠2 小时前
flutter状态管理入门教程-Riverpod
开发语言·javascript·flutter