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

第二十八章 字符串与数字

第二十八章 字符串与数字

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

参数扩展

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


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



基本参数

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


$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.dtcms.com/a/239326.html

相关文章:

  • 基于SpringBoot实现的大创管理系统设计与实现【源码+文档】
  • 人生中第一次开源:java版本的supervisor,支持web上管理进程,查看日志
  • 风力发电机领域的声纹监测产品
  • Java编程之桥接模式
  • LLMs 系列科普文(4)
  • CSP-38th
  • MCP笔记:介绍和原理
  • 高保真组件库:按钮
  • Docker 优势与缺点全面解析:容器技术的利与弊
  • Spring整合Mybatis
  • springboot2.x升级springboot3.x
  • 10万QPS高并发请求,如何防止重复下单
  • 从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
  • SeaweedFS S3 Spring Boot Starter
  • 监控脚本源码
  • 【阿里巴巴 x 浙江大学】信息与交互设计 - 交互设计概述
  • 算数运算符
  • 基于Vue3.0的在线工具网站
  • Day16
  • C盘的“下载”修改位置时出错了,怎么还原
  • three.js 零基础到入门
  • 软件更新机制的测试要点与稳定性提升
  • python中使用LibreHardwareMonitorLib.dll获取电脑硬件信息~~【不用同步打开exe文件】
  • 【LangChain4J】LangChain4J 第三弹:多模态与文生图的实现
  • 删除有序数组中的重复项
  • CZGL.SystemInfo:跨平台的系统信息获取库
  • Deep Research实践
  • 程序代码篇---随机数与随机数种子
  • 【Java学习笔记】Arrays类
  • C++17 和 C++20 中的新容器与工具:std::optional、std::variant 和 std::span