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


相关推荐

  • jediscluster 关闭 连接池_Redis——JedisCluster

    jediscluster 关闭 连接池_Redis——JedisClustersmart客户端实现原理(追求性能,不使用代理)从集群中选一个可运行节点,使用clusterslots初始化槽和节点映射。将clusterslots的结果映射到本地,为每个节点创建JedisPool。执行命令执行命令执行命令的过程简单来说,就是通过CRC16计算出key的槽,根据节点映射直接访问目标节点,如果出错,就随机挑选一个节点,通过moved重定向访问目标节点,并且重新初始化节点映射。好…

    2022年10月10日
    0
  • 复试–矩阵行列对角和

    复试–矩阵行列对角和

    2021年5月19日
    153
  • ODT入门_odt是什么

    ODT入门_odt是什么操作关键:推平一段区间cf896c题意:操作分四种,区间加上一个数、区间赋值、求区间第k小、求区间幂次和将序列中连续的相同的元素整合、用一个三元组(L,R,val)来表示set维护定义内部类:structnode{intl,r;//区间的左端点、右端点mutableLLv;//数值node(intL,intR=-1,LLV=…

    2022年9月9日
    0
  • java使用键盘输入_java中键盘输入代码

    java使用键盘输入_java中键盘输入代码展开全部程序开发过程中,32313133353236313431303231363533e78988e69d8331333365633962需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这种情况我们就束手无策,请你看以下三种解决方法吧:以下将列出几种方法:方法一:…

    2022年9月16日
    0
  • java.lang.AbstractMethodError异常

    java.lang.AbstractMethodError异常前言:今天APP在客户华为Android10版本手机上闪退,报如下异常,10以下版本无任何问题,异常信息也没有自己APP报错的堆栈信息,无法直接定位到是那行代码导致的问题,苦逼了半天,梳理思路,终于解决了。分析:由于APP没有做Q版本适配,难道不兼容吗?于是安装Q版模拟器进行复现问题,直接运行安装发现没有闪退,难道是只有在华为手机上才出现问题吗?为了验证这个观点,就用客户相同的安装包进行…

    2022年6月2日
    32

发表回复

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

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