zoukankan      html  css  js  c++  java
  • 第三章:shell变量知识进阶

    特殊变量:
    位置变量大于9的时候,需要加上(),例如$(10)
    $*获取脚本的所有参数,如果不加""和$@是一样的效果,如果加上"",则表示所有参数组成一个字符串
    $0代表脚本本身,如果脚本加路径,那$0的结果也是加上路径的
    dirname 获取脚本路径 dirname /root/test.sh 结果:/root
    basebame 获取脚本名称 basename /root/test.sh 结果:test.sh
    $$ 获取当前shell的进程号 ,防止重复执行,可以通过此变量校验
    $_ 获取上一个脚本的最后一个参数
    echo -n 不换行输出内容
    echo -e 解析转义字符 换行 制表符 v纵向制表符 退1格 回车
    eval args 当脚本执行到eval的时候,会把args的内容当成脚本执行
    exec < /tmp/test.txt while read line ;do echo $line ;done exec读取文件内容提供给read读取
    shift 使脚本的参数向左移一位
    计算字符串的长度
    1、expr length "asdas"
    2、echo "asdsa"|awk '{print length ($0)}'
    3、echo "asdsa"|wc -length
    4、a="asdsa" echo ${#a}
    变量自带的计算字符长度是效率最好的,包括其他的也是一样的,能用自带的就用自带的
    time 命令可以用来计算命令执行的时间(第一次知道)
    for a in `echo "i am odlboy linux,welconm our tranining."|sed 's/[[:punct:]]/ /g'` ;do if [ ${#a} -lt 6 ] ;then echo $a ;fi ;done打印字符串中小于6的单词
    a="123456" ;echo ${a:2:3}截取第二个字符向后3个字符 等于a="123456"; echo $a|cut -c 3-5
    变量内容删除和替换
    参考https://blog.csdn.net/qq_31567335/article/details/88985071
    a="asdasdasdlkaldk"; echo ${a#a*d}从开头开始删除最短匹配a*d的内容
    a="123 456 789 456" echo ${a//456/000} 变量替换,/替换第一个 //替换所有
    shell特殊扩展变量:
    test='' echo ${test:-0}如果变量test为空则返回0(还是比较实用的)
    test='' echo ${test:=0}如果变量test为空则将变量的值定义为0,和上一个的区别,但是不适用于位置变量和特殊变量(这个更实用)
    test='' echo $(test:?not defined) 如果test为空则返回not defined ,多用于测试变量的值是否为空
    test=${test2:+value} 如果这里用来判断test2的值是否为空,如果为空,怎返回空,如果有值,怎返回value,用来测试变量是否有值
    总结:这些东西理解都很烧脑,他是怎么发明的???也许是我理解能力差?-?

  • 相关阅读:
    ORACLE NOLOGGING研究
    由2013星光大道总决赛同步程序猿怎样成功?
    configure: error: mysql configure failed. Please check config.log for more information.
    The 2014 ACM-ICPC Asia Mudanjiang Regional Contest(2014牡丹江区域赛)
    about service in android
    极客标签互动课程系列 - Javascript生成SVG动画素描特效
    sql -- 移除数据中的换行符和回车符
    前端project师必需知识点
    spring装配集合
    【java项目实践】具体解释Ajax工作原理以及实现异步验证username是否存在+源代码下载(java版)
  • 原文地址:https://www.cnblogs.com/sxdpython/p/12601632.html
Copyright © 2011-2022 走看看