天天看点

shell变量学习记录

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