linux bash shell变量操作符 —— 筑梦之路

这篇具有很好参考价值的文章主要介绍了linux bash shell变量操作符 —— 筑梦之路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 变量子串

${var} 返回变量var的内容,单独使用时有没有{}一样,混合多个变量和常量时,用{}界定变量名

${#var} 返回变量var内容的长度

${var:offset} 从变量var中的偏移量offset开始截取到字符串结尾的子字符串,offset从0开始

${var:offset:length} 从变量var中的偏移量offset开始截取长度为length的子字符串

${var#*.} 从变量var中删除第一个匹配的点(.)及其左边的所有字符

${var##*.} 从变量var中删除最后一个匹配的点(.)及其左边的所有字符

${var%.*} 从变量var中删除最后一个匹配的点(.)及其右边的所有字符

${var%%.*} 从变量var中删除第一个匹配的点(.)及其右边的所有字符

var=file.txt.tar.gz
${var#*.}  #内容为"txt.tar.gz"
${var##*.} #内容为"gz"
${var%.*}  #内容为"file.txt.tar"
${var%%.*} #内容为"file"
# 使用其它Pattern和表达式,示例:

var=/home/xxx/aaa/file.txt #假设xxx为当前用户

# 从路径中获取文件名
${var##*/}  #内容为"file.txt"

# 将绝对路径转为相对路径
# whoami是获取当前用户名,使用$()执行子shell,$(whoami)将得到xxx
~${var#*$(whoami)}  #内容为"~/aaa/file.txt"

${var/pattern/string} 使用string代替第一个匹配的pattern

${var//pattern/string} 使用string代替所有匹配的pattern

${var,} 首字母转小写

${var,,} 全部转小写

${var^} 首字母转大写

${var^^} 全部转大写

2. 特殊扩展变量

${var-word} 如果变量var未赋值,则返回空字符串

${var:-word} 如果变量var未赋值或者值为空,则返回字符串word

${var+word} 如果变量var有值(包括空串""),则返回字符串word

var1=foo
var2=
echo ${var1-word}        # 内容为"foo"
echo ${var2-word}   # 内容为""
echo ${var1:-word}  #内容为"foo"
echo ${var2:-word}  # 内容为"word"
echo ${var1+word}   #内容为"word"
echo ${var2+word}   #内容为"word"

 ${var:+word} 如果变量var有值且不为空,则返回字符串word

${var=word} 如果变量var未赋值,则返回字符串word,并为var赋值为字符串word

${var:=word} 如果变量var未赋值或者值为空串,则返回字符串word,并为var赋值为字符串word

${var?word} 如果变量var未赋值,将字符串word作为标准错误输出,否则返回变量var的值

${var:?word} 如果变量var未赋值或者值为空串,将字符串word作为标准错误输出,否则返回变量var的值

3. 数组

array=(1 2 3 a b c) 定义一个名为array的数组,包含了6个元素,元素字段类型不需要统一

${array[index]} 访问数组中的元素,index从0开始,如果为负表示从数组的末尾开始的偏移量

${array[*]} 获取数组中所有元素

${array[@]} 获取数组中所有元素

${#array[*]} 获取数组的长度

${#array[@]} 获取数组的长度

${!array[@]} 获取数组索引列表,返回 0 1 2 3 4 5

array+=(4 d) 向数组中添加元素,数组内容为 1 2 3 a b c 4 d

unset array[6] 删除第 7 个元素,数组内容为 1 2 3 a b c d

unset array[-1] 删除倒数第 1 个元素,数组内容为 1 2 3 a b c

 4. 多行字符串变量

var=$(cat <<- 'EOF'
line1
line2
...
EOF
)

或者使用单引号或者双引号(单引号中${}和$()等都不会取表达式的值,双引号中才会):


var='line1
line2
...'

注意上述两种写法的差别,避免为变量内容带来不必要的空行。通过循环可依次得到变量中的每一行:


while read -r line; do
echo $line
done <<< $var

5. shell系统变量

$1 表示第一个参数,$2 表示第二个参数 ...

$# 命令行参数的个数

$0 当前Shell脚本程序的名称

$? 前一个命令或函数的返回码

$* 以 "参数1 参数2 ... " 形式获取所有参数

$@ 以 "参数1" "参数2" ... 形式获取所有参数

$$ 本程序的进程ID,即PID

$! 上一个命令的PID

$PPID 父进程的PID

$UID 执行这个脚本的当前用户ID

6. 变量输出

变量内容的输出使用 echo 命令。

如果未使用 echo,则会将变量内容当成 Shell 命令来执行,常用于调用某个程序并传递参数,如:应用程序启动脚本。文章来源地址https://www.toymoban.com/news/detail-758832.html

到了这里,关于linux bash shell变量操作符 —— 筑梦之路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【PostgreSQL】函数与操作符-比较函数和操作符

    PostgreSQL中的比较函数和操作符用于比较两个表达式的值。它们的作用是确定表达式的值是否满足某种条件,例如等于、大于、小于等。 比较函数是一个接受两个参数的函数,返回一个布尔值,表示两个参数是否满足某种条件。例如,equal()函数用于判断两个参数是否相等,

    2024年01月17日
    浏览(43)
  • 初始C语言——详细讲解操作符以及操作符的易错点

     第一章 “C“浒传——初识C语言(更适合初学者体质哦!)  第二章 详细认识分支语句和循环语句以及他们的易错点   第三章 初阶C语言——特别详细地介绍函数  第四章 初始C语言——详细地讲解数组的内容以及易错点  第五章  初始C语言——详细讲解操作符以及操

    2024年02月13日
    浏览(43)
  • 【c语言操作符系列1】^(异或操作符)讲解和多种例题详解

    目录 一、^ 是什么(^称为异或) 二、^的规律(特点) 三、可利用^秒杀的常见例题(重点) 1、消失的数字  2、不一样的人生密码 3、交换两个数(不能创建中间变量) 4、找出只出现一个的两个数字 是一种操作符, 针对二进制异或而言的 ,两个数对应的二进制位相同,异或

    2024年02月16日
    浏览(57)
  • Js中.?和??语法(可选链操作符和双问号操作符)

    Tips:为啥起这么一个标题呢,因为我自己当时看代码,看到这个语法的时候就感觉有些遗忘,但是又不知道他叫做什么名字,所以只能直接搜索.?和??这样搜索,哈哈哈相信不少人可能跟我一样,不知道他叫做什么名字嘿嘿。 可选链 操作符( ?. )允许读取位于连接对象链深

    2024年01月21日
    浏览(38)
  • 【C语言】中的位操作符和移位操作符,原码反码补码以及进制之间的转换

    欢迎大家来到c语言知识小课堂,今天的知识点是操作符和进制 同样都是数字1111,不同进制下数字的大小不同,第二行代表的是其各位数字十进制下的大小,将各位数字的十进制大小相加即1111在这个进制下转化为十进制的大小,从图中我们可以看出来 进制的定义:从右往左

    2024年02月22日
    浏览(40)
  • ES6...扩展操作符骚操作

    复制和合并数组变得更为简洁。不需要使用 concat() 方法或 slice() 方法,一个 … 操作符已经足够: 将数组作为一个需要单独一个个传入参数的函数的参数 对象属性展开复制 如果存在相同的值 后者覆盖前者 合并对象 类似于object.assign 不过,扩展属性并不总能生成与 Object.as

    2024年02月14日
    浏览(31)
  • 前端JS实用操作符,一些骚操作✨

             目录 0、!!  双重逻辑非操作符  📚 1、?? 操作符 空值合并/空判断  ✅ 2、?. 可选链运算符🔍 3、??= 操作符 逻辑空值赋值运算符 💚 4、三元运算符 📗 5、~~ 操作符 双位运算符 🔨 6、与 ||或 短路运算符 🚂 7、| 0 取整 🚁 8、 1 判断奇偶数 🎨 9、_ 数值分割

    2024年02月14日
    浏览(35)
  • JavaScript 操作符

    在 JavaScript 中,有一些操作符可以使代码更简洁、易读和高效。以下是一些常见的操作符: ?. 是 可选链操作符(optional chaining operator) 。 ?. 可选链操作符 用于访问可能为空或未定义的属性或方法,它允许我们安全地访问嵌套对象的属性,如果中间的属性为空或未定义,则不

    2023年04月19日
    浏览(69)
  • 【C】操作符详解

    今天给大家带来一篇关于C语言操作符的详细介绍,在C语言中操作符主要有以下几种: 1.算术操作符 2.移位操作符 3.位操作符 4.赋值操作符 5.单目操作符 6.关系操作符 7.逻辑操作符 8.逗号表达式 9.条件操作符 9.下标引用,函数调用和结构成员 接下来给大家详细介绍! + - * /

    2024年02月12日
    浏览(27)
  • 操作符详解(1)

    算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用、函数调用和结构成员 表达式求值 算术操作符分为:+、-、*、/、% 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。 对于 / 操作符如果两个操

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包