首页 > 系统相关 >linux shell基础--$字符

linux shell基础--$字符

时间:2023-03-23 19:34:40浏览次数:63  
标签:dir2 shell -- file linux 字符串 txt my 个字符

shell中有两类字符:普通字符、元字符。
普通字符在Shell中除了本身的字面意思外没有其他特殊意义,即普通纯文本;元字符是Shell的保留字符,在Shell中有着特殊的含义。

$()
反引号和$()的作用相同,用于命令替换(command substitution),即完成引用的命令的执行,将其结果替换出来。

$(())
进行数学运算
$ a=5; b=7; c=2
$(( a+b*c ))
在 $(( )) 中的变量名称,可于其前面加 $ 符号来替换,也可以不用,如:
$(( $a + $b * $c))

${}
${} 用于变量替换。一般情况下,$var 与 ${var} 一样,但用 ${ } 会比较精确的界定变量名称的范围
特殊功能:假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt
${var:n}
若n为正数,n从0开始,表示在变量var中提取第n个字符到末尾的所有字符。若n为负数,提取字符串最后面n的绝对值个字符,使用时在冒号后面加空格或一个算术表达式或整个num加上括号
${file:1}:提取第1个字符及其后面的所有字符:dir1//dir2/dir3/my.file.txt
${file: -3}:提取最后3个字符,注意冒号后面添加一个空格:txt
${file:1-4}:提取最后3个字符,冒号后面不需要添加空格:txt
${file:(-3)}:提取最后3个字符,冒号后面不需要添加空格:txt
${var:n1:n2}
用于提取从下标n1开始后面n2个字符,其中下标n1与n2从0开始
${file:0:5}:提取最左边的5个字符:/dir1
${file:5:5}:提取从第5个字符开始右边的连续5个字符:/dir2
${/}与${//}
用于字符串模式匹配替换
${var/pattern1/pattern2}表示将var字符串pattern1替换为pattern2。
${file/dir/path}:将第一个dir替换为path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:将全部dir替换为path:/path1/path2/path3/my.file.txt
${#}、${##}、${%}与${%%}
用于字符串模式匹配截断
${file#*/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt
${file#*.}:拿掉第一个 . 及其左边的字符串:file.txt
${file##*.}:拿掉最后一个 . 及其左边的字符串:txt
${file%/*}:拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:拿掉第一条 / 及其右边的字符串:(空值)
${file%.*}:拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
记忆的方法为:
# 是去掉左边(在鉴盘上 # 在 $ 之左边)
% 是去掉右边(在鉴盘上 % 在 $ 之右边)
单一符号是最小匹配﹔两个符号是最大匹配
${file#/}(不加*号)表示只去掉最左边的/

$0...$9代表shell文件参数
$@传给脚本的所有参数的列表
$# 获得参数列表的总个数
$*以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$脚本运行的当前进程ID号
$! 获得之前(上一个)进程 ID
$?显示最后命令的退出状态,(0 表示成功, 1 表示失败)
$- 是 set 命令的 –h 和 –B 的参数, 表示使用内置的 set 命令扩展解释之后的参数行,
$_ (下划线) 表示的是打印上一个输入参数行, 当这个命令在开头时, 打印输出文档的绝对路径名.

标签:dir2,shell,--,file,linux,字符串,txt,my,个字符
From: https://www.cnblogs.com/yuQbug/p/17248601.html

相关文章

  • 工程:上课时间调整模块修改
    上课时间调整模块修改1(2023-02-27)序号修改任务完成情况1分页功能(当某页只剩一行数据时,点击删除时应该把总页数减一)√2按照调整前的上课时间排序(默认降序......
  • The Witness Set
    \(\text{SpecialForTheWitness}\)简介说实话这个版块是对于\(\text{TheWitness}\)这一游戏的致敬,只为它给我带来的强烈的思维和视觉的双重冲击,让我体验到什么才真正......
  • 关于word的行距导致图片显示不全的问题
       这里我其实是插入了图片但是现实不出来,或者只能显示一点点。原因:段落行距为固定值,改为单倍行距or其他行距即可 改为单倍行距后,图片可以现实完结撒花!!! ......
  • UDP聊天实现
    packageedu.wtbu;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.net.DatagramPacket;importjava.net.Data......
  • 常用数字与字母的正则表达式 比如 前10个数字后面和一个数字或者字母
    常用数字与字母的正则表达式比如前10个数字后面和一个数字或者字母原文链接:https://www.cnblogs.com/xuqiang7/p/11082729.html^\d{10}[A-Za-z0-9]{1}$或者^\d{10}......
  • Mybatis源码阅读套路(转载)
    前言前提是我们需要对整个Mybatis的原理、工作流程和模块进行一个整体的直知晓,另外还要有使用经验。源码下载进入官网https://mybatis.org/mybatis-3/zh/index.html......
  • Shell---控制流程
    操作系统:RHEL7.x或CentOS7.x最小化安装配置好固定的IP,能访问互联网配置好yum源(yumrepolist可以查看yum源)本地光盘挂载光盘,开机自动挂载vim+/etc/fstab......
  • Vue——initInjections【九】
    前言前面我们简单的了解了vue初始化时的一些大概的流程,这里我们详细的了解下具体的内容;内容这一块主要围绕init.ts中的initInjections进行剖析,初始化生命周期之后紧......
  • 树上问题整理
    简单二叉树1.首先是树的遍历问题:树的先序中序后序遍历主要就是中序决定了这颗树长什么样,中序找根分为左右子树,然后再不断去查找!!!这个点挺重要的。如果是知道前序......
  • oracle插入数据的时候 要插入对应为字符串类型的字段 我这边输入单纯数字111,然后就
    oracle插入数据的时候  要插入对应为字符串类型的字段 我这边输入单纯数字111,然后就会转化为字符串,如果带中文就不会成功,比如插入我我我 这样子就不成功。后面如......