shell变量学习记录

shell变量学习记录

大家好,又见面了,我是全栈君。

个人学习笔记,留着以后查阅,故没有做过多说明,

来自书籍《悦知文化·实战Linux Shell编程与服务器管理》(卧龙小三)


  1. #!/bin/bash  
  2. #测试变量存在与否的基本用法  
  3.  
  4. #DEBUG=1 
  5. [ -n ${DEBUG-‘0’} ] && set -v  
  6. #定义两个变量,用hostname获取当前主机名  
  7. myhostname=$(hostname)  
  8. myhostip=  
  9. mydir=  
  10. msge=  
  11. msgg=msggisok  
  12. #取消变量myhostip  
  13. unset myhostip  
  14. #变量引用,语法${待测变量-默认值},若变量不存在,则符合判断,以传回默认值作为处置  
  15. #此处变量myhostname变量存在,故不显示data,myhostip变量前面已经取消,故显示’ip is not exist‘  
  16. a=${myhostname-‘data’}  
  17. b=${myhostip-‘”ip is not exist”‘}  
  18. #此处由于前面$mydir定义为空,值存在,故不传回默认值  
  19. c=${mydir-‘dir is null’}  
  20. #此处的$count变量不存在,用=设置值为100  
  21. d=${
    count:=100}  
  22. #“-”变量不存在,就显示默认值  
  23. e=${msge:-‘变量不存在’}  
  24. f=${msgf-:msg2}  
  25. #变量存在,就显示真实的值  
  26. g=${msgg:+真实值}  
  27. echo $a $b $c $d $e $f $g  
  28. #变量不存在,就显示错误,并显示设置的默认值  
  29. z=${msgz:?msgz}  
  30. #!/bin/bash  
  31.  
  32. NETWORK_PATH=$(/bin/ls /etc/rc.d/init.d/network)  
  33. echo ${NETWORK_PATH}  
  34. echo -e ‘语法${变量:位置起点},此处用”:2″‘  
  35. network=${NETWORK_PATH:2}  
  36. echo ${network}  
  37.  
  38.  
  39. NETWORK_PATH2=$(/bin/ls /etc/rc.d/init.d/network)  
  40. echo ${NETWORK_PATH2}  
  41. echo -e ‘语法${变量:位置起点:长度}, 此处用”2:4″‘  
  42. network2=${NETWORK_PATH2:2:4}  
  43. echo ${network2}  
  44.  
  45. #!/bin/bash  
  46.  
  47. #显示命令的本身  
  48. echo $0  
  49. #显示第二个输入  
  50. echo ${@:1}  
  51. echo ${@:2}  
  52. echo ${@:3}        
  53. echo ${@:4}  
  54. echo ${@:5}  
  55. echo ${@:3:2}  
  56.  
  57. A=abcd 
  58. echo ${#A}  
  59. #!/bin/bash  
  60.  
  61. file=$(/bin/ls /etc/rc.d/init.d/network)  
  62. echo $file  
  63. echo “\${变量#样式},由前面开始,删除最短匹配的字符串”  
  64. a=${file#/*/}  
  65. echo $a  
  66. echo “\${变量##样式},由前面开始,删除最长匹配的字符串”  
  67. b=${file##/*/}  
  68. echo $b  
  69. echo “\${变量%样式},由前面开始,删除最短匹配的字符串”  
  70. c=${file%/*}  
  71. echo $c  
  72. echo “\${变量%%样式},由前面开始,删除最长匹配字符串”  
  73. d=${file%%/*}  
  74. echo $d  
  75. echo “\${变量/样式/替换字符串},替换第一个匹配的字符串”  
  76. e=${file/d/NEW_WORLD}  
  77. echo $e  
  78. echo “\${变量//样式/替换字符串},替换所有匹配的字符串”  
  79. f=${file//d/NEW_WORLD}  
  80. echo $f  
  81. echo “\${变量/样式/},删除第一个符合样式的字符串”  
  82. g=${file/./}  
  83. echo $g  
  84. echo “\${变量//样式/},删除所有符合样式的字符串”  
  85. h=${file//./}  
  86. echo $h  
  87. echo “\${变量/#样式/},删除开头第一个符合样式的字符串”  
  88. i=${file/#\//}  
  89. echo $i  
  90. I=“AB,cd,ABCDAB” 
  91. echo $I  
  92. echo “\${变量/%样式/},删除结尾第一个符合样式的字符串”  
  93. j=${I/%AB/}  
  94. #获取变量名称列表  
  95. AB=‘abcd’ 
  96. ABCD=‘efghi’ 
  97. echo $AB $ABCD  
  98. dir_file=“$AB$ABCD” 
  99. echo “${!开头字符串@},把所以指定字符串开头的变量名称列出”  
  100. echo ${!AB@}  
  101.  
  102. #获取数组索引列表  
  103. NUM=(a b c d e f g)  
  104. echo “${!数组变量[@],把数组变量的所有索引列出来}”  
  105. k=${!NUM[@]}  
  106. echo $k  
  107. for i in “${!NUM[@]}”  
  108. do  
  109.   echo “num $i:${NUM[$i]}”  
  110. done  
  111.  
  112. #!/bin/bash  
  113.  
  114. PASSWD_PATH=$(ls /etc/passwd)  
  115. PATH=${PASSWD_PATH:+’OK’}  
  116. echo $PATH  
  117. #!/bin/bash  
  118. PS3=“请选择:” 
  119. select A in a b c d  
  120. do  
  121. echo $A $REPLY  
  122. break  
  123. done 
  124.  
  125. 三目运算
  126. a=1
  127. b=2
  128. echo $(($a==$b?0:1)) #显示结果为1
  129. echo $(($a!=$b?0:1)) #显示结果为0
     

本文转自it你好 51CTO博客,原文链接:http://blog.51cto.com/itnihao/885775,如需转载请自行联系原作者

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107967.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android setContentView流程[通俗易懂]

    Android setContentView流程[通俗易懂]MainActivity继承Activity的流程MainActivity继承至Activityimportandroid.app.Activity;importandroid.os.Bundle;publicclassMainActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(saved

    2022年6月26日
  • lmdb转换「建议收藏」

    lmdb转换「建议收藏」一、LMDB介绍:lmdb数据库LMDB全称为LightningMemory-MappedDatabase,就是非常快的内存映射型数据库,LMDB使用内存映射文件,可以提供更好的输入/输出性能,对于用于神经网络的大型数据集(比如ImageNet),可以将其存储在LMDB中。LMDB属于key-value数据库,而不是关系型数据库(比如MySQL),LMDB提供key-value存储,其中每个键值对都是我们数据集中的一个样本。LMDB的主要作用是提供数据管理,可以将各种

    2022年9月29日
  • AvalonDock学习总结

    AvalonDock学习总结介绍:借助AvalonDock可以开发出类似于VS2010的软件界面,实现可停靠布局。使用时需要Nugit中下载Extended.wpf.toolkit插件.在Xaml中需要应用命名空间xmlns:avalon=”http://schemas.xceed.com/wpf/xaml/avalondock”AvalonDock库提供了一些基本的类。DockingManger:管理停靠类。DockingManger中只允许包含一个LayoutRoot类DockingM…

    2022年7月20日
  • 【深入Java虚拟机】之四:类加载机制

    【深入Java虚拟机】之四:类加载机制类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定)。另外注意这里的几个阶段是按顺序开始,而不是按顺序进行或完成,因为这些阶段通常都是互相交叉地混合进行的,通常在一个阶段执行

    2022年5月24日
  • 使用cdn实现免备案_阿里云备案的域名可以在腾讯云用吗

    使用cdn实现免备案_阿里云备案的域名可以在腾讯云用吗昨晚在QQ群看到的,目前可以白嫖!无视阿里云给你分配的cname地址域名直接解析到发的那些cname地址上面就可以使用了!添加CDN,加速区域选择“全球(不含中国大陆)”,然后把域名解析到阿里云国内CDN节点IP上。注意:知道的人多了或者也许会失效!这是我的网站测试的结果可以访问看一下速度:爱云影视…

    2022年9月11日
  • C语言 一个字符常量占几个字节

    C语言 一个字符常量占几个字节网上一大堆说的不清不楚,总而言之问你的是一个字符常量占几个字节回答:     字符型常量是由一对单引号括起来的单个字符。它分为一般字符常量和转义字符。一个字符常量在计算机的存储中占据一个字节…

    2022年6月26日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号