博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入理解bash及字符串的处理
阅读量:6277 次
发布时间:2019-06-22

本文共 1729 字,大约阅读时间需要 5 分钟。

1、bash的内置变量:

PATH PS1 HOSTNAME UID HISTFILE HISTEILESIZE HISTCONTROL

$BASH:bash二进制程序文件的路径

$BASH_SUBSHELL:子shell的层次

$BASH_VERSION

$EDITOR:默认编辑器

$EUID:有效的用户ID

$UID:当前用户的ID号

$FUNCNAME:当前函数的名称

$GROUPS:当前用户显示的组

$HOME:当前用户的家目录

$HOSTTYPE:主机架构类型,用来识别系统硬件

$MACHTYPE:平台类型,系统平台依赖的编译平台

$OSTYPE:OS系统类型

$IFS:输入数据时的字段分隔符,默认是空白符(空格、制表符、换行符)

$OLDPWD:上次使用的目录

$PWD:当前目录

$PPID:父进程

$PS1:主提示符

$PS2:第二提示符,主要用于补充完全命令输入时的提示符

$PS3:第三提示符,用于select命令中

$PS4:第四提示符,当使用-X选项调用脚本时,显示的提示符,默认为+号

$SECONDS:当前脚本已经运行的时长

$SHLVL:shell的级别。bash别嵌入的深度

2、特殊变量:

    $0:脚本名称自身

    $1,$2。。。。:位置参数

    $#:命令行参数个数

    $*:所有的参数,被当作一个字符串

    $@:所有的参数,每个参数都是一个独立的字符串

    $-:传递给脚本的标记

    $!:运行于后台的最后一个作业的PID

    $_:上一条命令的最后一个参数的值

    $?:上一条命令状态的返回值

    $$:脚本自身的PID

操作变量:

    ${#var} :返回变量中字符串的长度

    ${var}:变量引用

    ${var:-default}:如果var没有声明或者为空,则返回default字串,否则返回var自身的值

    ${var:+default}:如果var没有声明或者为空,则返回空字串,否则返回default的值

    ${var:=default}:如果var没有声明或者为空,则返回default字串,并且将default赋值给var,否则返回var自身的值

     ${var:?default}:如果var没有声明或者为空,则以default为错误信息返回,否则

     zb 返回var自身的值

字串消除

     ${var#*word}:查找var中自左而右第一个被word匹配到的串,并将此串及向左的所有内容都删除

     ${var##*word}:查找var中自左而右最后一次被word匹配到的串,并将此串及向左的所有内容都删除

     ${var%word*}:查找var中自右而左第一个被word匹配到的串,并将此串及向右的所有内容都删除

     ${var%%word*}:查找var中自右而左最后一次被word匹配到的串,并将此串及向右的所有内容都删除

取字串:

   ${var:pos}:偏移pos个字符,取余下的字串

    name=jerry,${name:2}结果为rry

   ${var:pos:num}偏移pos个字符,取num个字符长度的字串

     name='hello world' ${name:2:5}结果为llo w

 

字串替换

   ${var/Pattern/Replaceplacement} :以Pattern为模式匹配var中的字串,将第一次匹配到的替换为Replaceplacement

   ${var// Pattern/Replaceplacement} :以Pattern为模式匹配var中的字串,将全部匹配到的替换为Replaceplacement6

声明变量:

   declare

      -i:整形

      -a:数值

      -x:环境变量

      -r:只读变量,不能撤销,不能修改,相当于readonly

      -f:声明函数

bash编程的信号捕获(KILL无法捕捉)

  trap 陷阱

  #查看信号  

  kill -l

  #使用方法,命令加信号

  trap ‘command’ signal 

信号捕捉用于:在中途中止时做一些清理操作

本文转自younger00851CTO博客,原文链接: http://blog.51cto.com/younger008/1983405,如需转载请自行联系原作者

你可能感兴趣的文章
使用Layer弹窗时遇到Layer.Close()后dom元素延迟性销毁的问题 @Gyb
查看>>
LVS DR +keepalived配置
查看>>
安装redis.msi 及启动命令
查看>>
k8s集群部署四(部署Flannel网络)
查看>>
C4C和Outlook的集成
查看>>
人脸检测,人脸识别,机器学习库Dlib在VS2015上的详细安装教程,示例运行
查看>>
数组——冒泡排序算法
查看>>
微信H5支付坑一--手续费未结算
查看>>
Spring Cloud Alibaba发布第二个版本,Spring 发来贺电
查看>>
Netty 备录 (一)
查看>>
netfilter 五个表五个链介绍,iptables案例
查看>>
Ubuntu服务器界面认识及创建用户
查看>>
网站如何防止sql注入攻击
查看>>
【TeeChart .NET教程】(四)轴控制
查看>>
关于SBR3U30P1-7你必须知道的
查看>>
Linux防火墙-firewalled
查看>>
爬虫获取网页,出现乱码问题
查看>>
再有人问你Java内存模型是什么,就把这篇文章发给他
查看>>
控制台程序隐藏方法总结(四种)
查看>>
nginx负载均衡
查看>>