bash替换

  • 变量替换的高级形式

getopts命令

语法:getopts
optstring name [args]

optstring包含希望被识别并且处理的选项字符,如果某个字符的后面有一个冒号(:),说明这个选项是要指定参数的,当命令行使用这样的选项时,选项字符与参数之间应该有个空格,冒号和问号不能作为选项字符。脚本每次执行getopts命令时,他都会把命令行中的下一个选项放到变量name中,如果这个选项需要参数,他会把相应的
参数放到变量OPTARG中,然后把下一次执行getopts命令时要处理的选项的index放到变量OPTIND中,这样在getopts处理完所有选项后,最后的操作对象的index就会保存到变量OPTIND中。每一次成功地处理完一个选项以后,都会设置退出状态为0,而在处理完所有选项以后,由于没有可以处理的选项,getopts会以大于0的状态退出,从而可以作为结束循环的判断。

当用户执行脚本时没有提供需要的参数,则会把一个问号(?)赋给OPTION,同时打印诊断信息。问号(?)在Shell中是有特殊含义的,所以case中需要转义\?。


${var:-value}


如果变量var没有被定义或为空,就是用默认值来代替变量var的值,但是不会改变var的值


${var:+value}


如果变量var不为空,就是用默认值value来代替var的值,但是不会改变var的值


${var:=value}


如果变量var没有被定义或为空,就把value赋给它


${var:?msg}


如果变量var的值为空,那么打印msg到标准错误输出并退出脚本

  • 文件名替换

    Shell支持以下几种通配符


*


匹配0个或多个任意的字符


?


匹配一个任意字符


[]


匹配指定字符范围内中的任意一个字符,前面添加^或!来表示不包含这个范围的字符

注意,*和?只能匹配可见文件,要匹配隐藏文件得手动添加原点(.)

  • 命令替换

    语法:

    • $(commands)
    • `command`

都可以嵌套,但`commands
\`commands\``需要转义反引号。$()要简洁,因为不用转义特殊字符。

commands可以用分号(;)分割的多个命令,也可以是管道连接的多个命令。

  • 算术运算替换

    内建的算术运算表达式$(()) 不能在变量前加$

    expr命令 $(expr
    $DAY / 7) 变量、运算符周围得有空格,

    let命令 算术表达式中不能有空格,且结果不会做替换

$(())还支持逻辑运算,但只能进行整数元算,小数部分会被忽略

时间: 2024-10-29 10:48:24

bash替换的相关文章

bash 替换特殊字符

bash 替换特殊字符 PID=`netstat -tpln|grep 8002`;PID=${PID#*LISTEN};PID=`echo $PID | sed -s "s/\/java//g"`

sed匹配与替换

今天发现之前创建nagios用户是在/bin/bash下的,存在一定的安装隐患,由于涉及的服务器数量较多,所以采用saltstack命令行批量更改. 利用sed匹配字符串(nagios)所在行,并且替换这行的一些关键字(/bin/bash) salt '*' cmd.run "sed -i '/nagios/s#/bin/bash#/sbin/nologin#' /etc/passwd" 首先匹配nagios用户这一行,s替换,#为分隔符,将/bin/bash替换为/sbin/nolo

Linux之linux bash scripts

进程是程序运行时的内存空间和设置,存在于用户空间:用户空间是存放运行的程序和它们的数据的一部分内存空间.shell是用户和Linux内核之间的接口程序,围绕内核的外层.当从shell或其他程序向Linux传递命令时,内核会做出相应的反应.shell也是一个解释型的程序设计语言,支持绝大多数在高级语言中能见到的程序元素,如数据变量.参数传递.判断.流程控制.数据输入和输出,子程序及以中断处理等. shell程序的编译过程分为预处理.编译.汇编.链接等几个阶段 大致的执行过程,图示:        

Linux命令----sed和awk

sed -n :加上-n参数后,只有经过sed特殊处理的哪一行或者动作才会被列出来. 动作说明:[n1,n2[function]] function : a:新增,a的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行) c:取代,c的后面可以接字符串,这些字符串可以取代 n1,n2 之间的行 d:删除,d后面通常不接任何东西; i:插入,i后面可以接字符串,而这些字符串会出现在新的一行(目前的上一行) p:列印, s:取代,可以直接进行取代的工作,通常这个s的动作可以搭配正则表示法

linux sed命令详解(转)

简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. sed使用参数 [[email protected] ~]# sed [-nefr] [动作] 选项与参数: -n

linux常用指令(3)文本处理

查看文件内容 cat /var/log/messages | grep mount   查看出错日志文件tac file1 从最后一行开始反向查看一个文件的内容 more file1 查看一个长文件的内容 less file1 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作 head -2 file1 查看一个文件的前两行 tail -2 file1 查看一个文件的最后两行 tail -f /var/log/messages 实时查看被添加到一个文件中的内容 patch和

2.2 linux sed命令详解

简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. sed使用参数 [[email protected] ~]# sed [-nefr] [动作] 选项与参数

Linux_System11

1.查看/var目录的大小:1)ll -hd /var 查看目录的实际大小2)du -sh /var 查看目录所占磁盘空间大小修改权限:chmod 750 hunan修改属主和属组:groupadd wudangchown ftp:wudang beijing 2.查找命令ifconfig位置:which ifconfig 在环境变量PATH中查找命令的位置whereis ifconfig 搜索特定文件 3.find命令:找出根目录下uid是500的文件和目录,并列出显示详细信息及大小.权限fi

LINUX 下 find grep sed awk 的常见基本用法特点

LINUX 下 find grep sed awk 的常见基本用法特点 只为让自己具有更高的水准,这就开始了长达6个月的小白进阶路! 这几天学习linux基础命令有点犯蒙,尤其是对文件查找这块.所有我想把一些我觉得常用的实用的参数项总结下来,大神勿喷哈... 不到之处请大家指教,小女子在此谢过了. 一.find:命令用于查找文件系统中指定的文件,其命令格式为: 1.find pathname -options [ -print  -exec  -ok ... ] (1)find 命令的参数: p