news 2026/5/16 23:24:24

Shell脚本波浪号避坑指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Shell脚本波浪号避坑指南

在 Shell 脚本中,~(波浪号)的解析规则需要注意:双引号包裹时,~不会被自动解析为用户家目录,直接写BASE_DIR="~/apps"会导致路径变成字面量的~/apps而非实际的家目录路径(比如/home/xxx/apps)。

以下是正确定义并切换到用户家目录下 apps 目录的几种方法,按推荐优先级排序:

方法 1:用$HOME环境变量(最推荐)

$HOME是 Shell 内置的环境变量,直接指向当前用户的家目录,不受引号解析规则影响,兼容性最好:

#!/bin/bash # 定义家目录下的 apps 路径(兼容所有 Shell 场景) BASE_DIR="$HOME/apps" # 切换到该目录(推荐加容错:目录不存在则创建) cd "$BASE_DIR" || { echo "目录 $BASE_DIR 不存在,正在创建..." mkdir -p "$BASE_DIR" cd "$BASE_DIR" || exit 1 # 仍失败则退出脚本 } # 验证当前目录 echo "当前目录:$(pwd)"

方法 2:先解析~再赋值(适合习惯用~的场景)

如果非要用~,需要让 Shell 先解析它(不包裹在双引号里),再赋值:

#!/bin/bash # 注意:~ 不在双引号内,先被解析为家目录,再拼接 apps BASE_DIR=~/"apps" # 切换目录(同上,加容错) cd "$BASE_DIR" || { mkdir -p "$BASE_DIR" && cd "$BASE_DIR"; } echo "当前目录:$(pwd)"

方法 3:用 eval 强制解析(不推荐,仅作了解)

eval可以强制解析字符串中的~,但存在安全风险(若路径含特殊字符可能被注入),仅适合特殊场景:

#!/bin/bash # 先定义字面量路径,再用 eval 解析 ~ BASE_DIR="~/apps" eval BASE_DIR="$BASE_DIR" # 解析后 BASE_DIR 变为 /home/xxx/apps # 切换目录 cd "$BASE_DIR" || exit 1 echo "当前目录:$(pwd)"

关键注意事项

  1. 引号规则
    • 单 / 双引号内的~会被当作普通字符,不会解析为家目录;
    • 无引号 / 仅部分包裹时(如~/"apps"),~会被正常解析。
  2. 容错处理cd命令后加||处理目录不存在的情况,避免脚本报错中断;
  3. 跨用户兼容$HOME会自动适配当前执行脚本的用户(比如 root 用户的$HOME/root),无需硬编码路径。

测试验证

执行脚本后,若输出类似当前目录:/home/你的用户名/apps(或/root/apps,若以 root 执行),则说明路径定义和切换成功。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/16 6:48:30

m3u8-downloader桌面版:流媒体视频下载的终极解决方案

m3u8-downloader桌面版:流媒体视频下载的终极解决方案 【免费下载链接】m3u8-downloader m3u8 视频在线提取工具 流媒体下载 m3u8下载 桌面客户端 windows mac 项目地址: https://gitcode.com/gh_mirrors/m3u8/m3u8-downloader 还在为无法保存网页视频而烦恼…

作者头像 李华
网站建设 2026/5/6 9:46:56

Apache Doris 精细化调优配置指南

Doris 调优核心围绕资源利用率(内存 / CPU/I/O)、查询性能、导入效率和集群稳定性展开,需结合硬件环境(CPU / 内存 / 磁盘类型)、业务场景(高并发点查 / 大数据量分析 / 高吞吐导入)和数据特征&…

作者头像 李华
网站建设 2026/5/16 14:04:06

现代电子书管理平台Koodo Reader深度体验指南

现代电子书管理平台Koodo Reader深度体验指南 【免费下载链接】koodo-reader A modern ebook manager and reader with sync and backup capacities for Windows, macOS, Linux and Web 项目地址: https://gitcode.com/GitHub_Trending/koo/koodo-reader 在数字阅读日益…

作者头像 李华
网站建设 2026/5/15 10:32:31

Dify智能体调用Qwen-Image-Edit-2509实现批量图片文案更新

Dify智能体调用Qwen-Image-Edit-2509实现批量图片文案更新 在电商运营的日常工作中,每逢大促或价格调整,成百上千张商品主图的文案都需要同步更新——“限时折扣”变“秒杀价”,“99”改成“69”。过去,这项任务依赖设计师手动在P…

作者头像 李华
网站建设 2026/5/1 6:17:32

办公全能王!Word 图片排版 + PDF 互转一个工具全搞定

宝子们!谁没被 Word 图片排版逼疯过~ 插入的图片大小不一、排列杂乱,碰到较真的领导还要反复改,头疼到爆炸!软件下载地址 还好挖到这款 Word 全能神器!不仅能一键统一图片高度、宽度(支持百分比…

作者头像 李华
网站建设 2026/5/16 0:09:56

CSP-J教程——第一阶段第八课:阶段性复习与测评

课程目标 综合复习前7课的所有知识点通过测验检验学习成果通过编程闯关游戏巩固知识查漏补缺,强化薄弱环节提升编程兴趣和成就感第一部分:知识回顾与梳理(40分钟) 1.1 前7课知识点思维导图 编程基础 ├── 计算机与编程概念 ├─…

作者头像 李华