shell编程 - 字符串和算数计算

        计算机程序其实就是处理数据。很多编程问题需要使用到更小的数据单元,例如字符串和数字。shell提供了多种字符串操作的参数扩展。除了算术扩展,还有一个常见的叫做bc的命令行程序,它能执行更高层次的数学运算。

参数扩展(Parameter Expansion)

基本参数

        参数扩展的最简单形式体现在平常对变量的使用中。

$a扩展后成为变量a所包含的内容,无论a包含什么。简单参数也可以被花括号包围,例如${a},这对扩展本身毫无影响。

但是,当变量相邻与其他文本时,则必须使用花括号,否则shell可能混淆。

a="foo"

echo $a_file

输出的结果是:空,

因为shell会试图扩展名为a_file的变量而不是a变量。可以通过加上花括号解决

a="foo"

echo ${a}_file 

输出结果是:foo_file

综上,变量的使用,建议一直添加花括号来进行扩展,避免扩展不存在的变量。 

大于9的位置参数也是需要给相应数字加上花括号来使用。例如,访问第11个位置变量,${11}。

空变量扩展的管理

        有的参数扩展用于处理不存在的变量或者空变量。这些参数扩展在处理缺失的位置参数和给参数赋默认值时很有用处。

常见的空变量扩展包括:

${var:-word}:如果变量 var 未定义或为空字符串,则返回 word,否则返回 var 的值。
${var:=word}:如果变量 var 未定义或为空字符串,则将 var 的值设置为 word,并返回 word,否则返回 var 的值。(位置参数不能以这种方式赋值,会报错
${var:+word}:如果变量 var 定义且非空,则返回 word,否则返回空字符串。
${var:?message}:如果变量 var 未定义或为空字符串,则输出错误信息 message,并退出脚本,否则返回 var 的值。
${var:offset:length}:如果变量 var 定义且非空,则返回从位置 offset 开始、长度为 length 的子字符串,否则返回空字符串。

以上是一些常见的空字符串扩展,还有更多的用法可以参考 bash 的文档。

需要注意的是,在进行空字符串扩展时,需要将变量名或表达式用大括号括起来。

返回变量名的扩展

bash 获取变量名扩展

在 bash 中,具有返回变量名的功能。这种功能在相当特殊的情况下才会被用到。
${!prefix*}:该扩展返回所有以 prefix 开头的变量名。
${!prefix@}:该扩展返回所有以 prefix 开头的变量名,以数组的形式返回。

注意不要缺失* 或者 @

echo ${!BASH*}

 输出结果,返回所有的以BASH开头的变量名。   

BASH BASHOPTS BASHPID BASH_ALIASES BASH_ARGC BASH_ARGV BASH_CMDS BASH_COMMAND BASH_LINENO BASH_SOURCE BASH_SUBSHELL BASH_VERSINFO BASH_VERSION

字符串操作

&n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值