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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • aptitude命令使用

    aptitude命令使用aptitude一个类似于aptinstall的命令使用引用官网的描述解释aptitude是一个功能丰富的包管理器,包括:使用类似mutt的语法灵活地检索软件包,类似dselect的持续用户操作,获取并显示大多数软件包的Debianchangelog的功能,一个类似apt-get的命令行模式。aptitude还是个Y2K兼容,轻便,自清洁以及友好的程序。常…

    2025年7月28日
    4
  • soapUI使用教程[通俗易懂]

    soapUI使用教程[通俗易懂]SoapUI使用1.什么是soapUI由于Web服务是被程序调用的,一般不会提供界面让最终用户或测试人员直接使用,soapUI是针对这种情况开发的一个工具,用户可以在soapUI中通过简单的操作完成复杂的测试。目前我们系统中电子渠道接口、充值卡接口都是用WebService实现的,因此需要用到SoapUI进行测试。SoapUI不仅可以简单地执行测试,而且可以自动运行已经准备

    2022年6月15日
    93
  • 线性代数代码实现(六)矩阵除法(C++)

    线性代数代码实现(六)矩阵除法(C++)前言:距离上一篇文章发布已经五天过去了,在这里先给一直等待的伙伴们说声抱歉,因为博主最近的事情很多,只好暂时停更,望大家理解!上一篇文章中,我们介绍了求解逆矩阵的方法,我提到,可逆矩阵可以定义除法。这一篇文章中,讨论一下怎样实现矩阵除法!一、线性代数知识回顾:事实上,矩阵没有“除法”这一概念,我们的“除法”实际上是用以下方式来定义的:设矩阵,,,其中为可逆矩阵,满足以下等式:变换得:如果我们换一种写法,就成了:这样就定义了矩阵除法,我把它称…

    2022年6月18日
    39
  • navigator html_javascript:_dopostback什么意思

    navigator html_javascript:_dopostback什么意思1.navigator属性以及方法解析:属性描述IEFOappCodeName返回浏览器的代码名。419appMinorVersion返回浏览器的次级版本。4NoNoappName返回浏览器的名称。419appVersion返回浏览器的平台和版本信息。4

    2025年9月6日
    6
  • 手机兼容性测试_浏览器兼容性测试工具

    手机兼容性测试_浏览器兼容性测试工具AndroidApp兼容性测试,是一个比较重要的App评价内容说到测试阶段,兼容性测试主要是对App在各类机型上的兼容、适配等情况进行测试。搞清楚这一阶段的测试重点后,因此,AndroidApp在进行兼容性测试前,一定要做好其前序测试内容,否则兼容性测试效果将会较差。1.机型配置问题Android兼容测试一定要做到宽范围覆盖,如果做不到这个,那么就违背了兼容性测试的目标——测试App在各类机型、系统上的运行是否兼容、适配。因此,兼容性测试必须要在各个机型、系统上对App进行运行、测.

    2025年7月23日
    3
  • linux .deb 安装_快速提示:如何在Linux中安装.deb和.tar文件

    linux .deb 安装_快速提示:如何在Linux中安装.deb和.tar文件linux.deb安装Inthisquicktutorial,IexplainhowtoinstallprogramsinLinuxusingterminalcommands.ThisparticulartutorialusesLinuxMint18(Cinnamon64-bit),butthecommandsprovidedbelow…

    2022年5月15日
    53

发表回复

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

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