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

第二十八章 字符串与数字

第二十八章 字符串与数字

计算机程序完全就是和数据打交道。很多编程问题需要使用字符串和数字这种更小的数据来解决。

参数扩展

第七章,已经接触过参数扩展,但未进行详细说明,大多数参数扩展并不用于命令行,而是出现在脚本文件中。


如果没有什么特殊原因,把参数扩展放入双引号是一种不错的做法,应该坚持这种做法,这样可以避免出现意想不到的单词分割。在处理文件名的时候尤为如此,因为文件名经常会含有空格符和其它字符。



基本参数

日常使用的变量就是参数扩展最简单形式,例如


$a


扩展结果就是变量a所包含的值。参数也可以在两侧加上花括号:


${a}


如果变量仅挨着其它文本,花括号就不能少,否则可能会对Shell造成混淆。

例如:通过在变量a的值之后追加字符串_file,以此创建文件名称:

a="foo"
echo "$a_file"

执行上述命令,变量a的值不会有任何变化,因为Shell尝试扩展的是变量a_file,而不是变量a。在“真正的”变量名两侧添加花括号就可以解决这个问题:
echo "${a}_file"

命令输出结果如下:

foo_file


大于9的位置参数也可以通过在数字两侧添加花括号来访问。例如要想访问第11个位置参数,可以这样:

${11}

管理空变量扩展

有些参数扩展用于处理不存在变量或空变量,这类扩展在处理位置参数缺失以及为参数设置默认值的时候非常方便。来看这样一个扩展:

${parameter:-word}

如果paramete未设置或为空,则使用word为扩展结果。如果parameter不为空,则使用parameter的值作为扩展结果。例如:

在这里插入图片描述


再看另一个扩展,其中使用等号代替了连字符:

${parameter:=word}

如果parameter未设置或为空,则使用word作为扩展结果,除此之外,还将word赋给parameter。如果parameter不为空,则使用parameter的值作为扩展结果。例如:

在这里插入图片描述


位置参数和其它特殊参数不能用这种方法复制。



这次改用问号:

${parameter:?word}

如果parameter未设置为空,该扩展会使脚本退出并返回错误信息,word会被发送至标准错误。如果parameter不为空,则使用parameter的值作为扩展结果。例如:

http://www.xdnf.cn/news/12902.html

相关文章:

  • 5G-A通感融合对监控监督体系的核心作用
  • 下一代设备健康管理解决方案:基于多源异构数据融合的智能运维架构
  • AD规则设置-铜皮规则,阻焊规则,实时DRC
  • 栈和队列的奇妙冒险:用栈实现队列
  • 6个月Python学习计划 Day 17 - 继承、多态与魔术方法
  • 快速上手Linux文本流编辑器sed
  • 智慧城市项目总体建设方案(Word700页+)
  • 基于深度强化学习的智能机器人导航系统
  • 黑马Javaweb Request和Response
  • 05.查询表
  • 【无人机】地面站crazyfile-cfclient免安装方法,Python3.10的整体环境配置打包
  • OCS2库及其在足式机器人上的应用
  • RK3568项目(七)--uboot系统之外设与PMIC详解
  • 真实案例分享,Augment Code和Cursor那个比较好用?
  • PDF 转 Word 工具 拖拽秒转可编辑文档,批量处理保留原格式
  • 用通俗的话解释下MCP是个啥?
  • android 模拟器如何进行单模块更新
  • 【设计模式】1.简单工厂、工厂、抽象工厂模式
  • ORACLE 修改端口号之后无法启动?
  • 港理工:LLM推理与推荐能力集成
  • ElGamal加密算法:离散对数难题的安全基石
  • (五)Linux性能优化-CPU-性能优化
  • GitOps 核心思想 - 当 Git 成为唯一信源
  • 2025-04-22-X86 架构与 Arm 架构异同及应用
  • Keil Mdk新建stm32工程找不到对应芯片开发包的解决方法
  • LeetCode - 148. 排序链表
  • Jupyter notebook的文章结构目录查看方式和汉化方法
  • 基于Matlab肺结节分割(肺结节提取)源程序,也有GUI人机界面版本。使用传统图像分割方法,非深度学习方法。使用LIDC-IDRI数据集。
  • RoseMirrorHA 双机热备全解析
  • Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?