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实测。

相关推荐
无足鸟ICT7 小时前
【RHCA+】ipcrm命令(删除IPC资源)
linux
Felven7 小时前
C. Brr Brrr Patapim
c语言·开发语言
星恒随风8 小时前
MySQL 从零入门(四):表的增删改查与基础查询详解
linux·服务器·数据库·笔记·mysql
路溪非溪9 小时前
python标准库使用总结
开发语言·python
SomeOtherTime10 小时前
Rust 面向对象介绍(AI回答)
开发语言·python·rust
陈希12311 小时前
Linux 网络诊断工具实战:ping、curl、tcpdump、mtr、dig 用法详解
linux·网络·tcpdump
进击的荆棘11 小时前
Linux系统——线程同步与互斥之线程池和安全
linux·运维·服务器·安全·单例模式·线程
zh_xuan11 小时前
kotlin常见面试题
开发语言·kotlin·面试题
刘大望11 小时前
不用买开发板:用 QEMU 走通嵌入式 Linux 全流程(三)存储与网络实地验证
linux·qemu·嵌入式linux·alpine
那明眸似水12 小时前
云原生项目三:Docker秒级启动NextCloud个人网盘存储办公系统
linux·运维·docker·云原生·容器