天天看點

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