当前位置: 首页 > news >正文

Shebang行的写入

将以下内容写入文件semester,每次写入一行

#!/bin/sh
curl --head --silent https://missing.csail.mit.edu

1 Shebang 行 (#!/bin/sh)

Shebang 行 (#!/bin/sh)是 UNIX/Linux 系统中脚本的标准开头(称为 “shebang” 或 “hashbang”),作用是指定脚本的解释器。

  • #! 是固定前缀
  • /bin/sh 是系统默认 Shell 的路径
2 问题

使用echo #!/bin/sh > semester写入Shebang行失败,因为#被Bash解析为注释符号。

3 解决方案

使用单引号包裹内容:

  echo '#!/bin/sh' > semester  # ✅ 正确写法

避免无引号或双引号:

echo #!/bin/sh > semester    # ❌ 注释导致写入失败
echo "#!/bin/sh" > semester  # ❗ 双引号在启用历史扩展时可能报错

!后接字符串可能被解析为历史命令引用(如!123表示执行历史记录第123条命令)
而使用单引号'包裹,能禁用其解析

4 # 触发注释的条件
  1. 出现在单词的起始位置(即前面是空格或命令分隔符)且未被引号包裹(单引号 ' 或双引号 "
  2. 后面紧跟!,即#!不在脚本第一行作为Shebang生效时
5 单引号'与双引号"的区别
5.1 单引号 ' 的行为

完全字面量,完全禁用所有特殊字符的解析:

  • 字符串中的 *$! 等符号都会被当作普通字符。
  • 变量不会被扩展。
5.2 双引号 " 的行为

允许部分特殊字符的解析:

  • 变量(如 $VAR)会被扩展。
  • 命令替换(如 $(cmd)`cmd`)会被执行。
  • 部分转义:$、反斜杠转义字符\(如 \n\t)等会被解析;但*不会被解析

相关文章:

  • qt 对QObject::tr()函数进行重定向
  • 【工程实践/源码阅读】批量文件处理步骤以及如何并行处理
  • Ubuntu下用QEMU模拟运行OpenBMC
  • 解决address already in use报错:如何查看占用某个端口的程序并杀死
  • 【uni-app】引用公共组件
  • 数据预处理流程与关键步骤解析
  • React 开发环境搭建
  • 多个内容滑动轮播图【前端】
  • 第十六次CCF-CSP认证(含C++源码)
  • c++图论(五)之判断图连通
  • 浪潮信息再塑AI+OS格局,联手龙蜥共筑未来
  • 元数据管理系列(一):元数据管理的前世今生
  • 实战3. 利用Pytorch预写好ResNet-18预测电视剧《辛普森一家》中的人物——图像分类
  • Ceph集群2025(Squid版)导出高可用NFS集群(上集)
  • 第一人称动作识别文献阅读——LSTA:用于自我中心动作识别的长短期注意力机制
  • 第二章 | 智能合约 区块链基础知识{介绍篇}
  • 三、重学C++—C语言内存管理
  • PyTorch 面试题及参考答案(精选100道)
  • 圆弧插补相关算法汇总(C++和ST源代码)
  • Spring6: 1概述
  • 看纪录片抵学分,贺桂梅:纪录片是对抗低质碎片信息的好媒介
  • 奥斯卡新规:评委必须看完影片再投票;网友:以前不是啊?
  • 上海:以税务支持鼓励探索更多的创新,助力企业出海
  • 秦洪看盘|资金切换主线,重构市场风格
  • 北方旱情持续,水利部:大中型灌区春灌总体有保障
  • 看见“看得见的手”,看见住房与土地——读《央地之间》