经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Linux/Shell » 查看文章
[Intern][2019.03.20]Linux Shell 执行传参数和expr
来源:cnblogs  作者:Approid  时间:2019/3/21 8:43:00  对本文有异议

前不久入职实习生,现在在帮着组里面dalao们跑Case,时不时要上去收一下有木有Dump,每次敲命令太烦人于是逼着自己学写Shell脚本。一开始真的是很痛苦啊,也没能搞到书,只能凭网上半真半假的消息照葫芦画瓢!废话少说,上正文!

=========================我是分割线=========================

  1. 1 clear
  2. 2
  3. 3 echo "Check_dump is a tool help you check dumps"
  4. 4
  5. 5 numberOfSPs=2
  6. 6 commands="-lcd"
  7. 17 ###########################################################
  8. 18 #
  9. 19 # getopts 命令是 Korn/POSIX shell 的内置命令
  10. 20 # ,用来从参数列表检索选项以及选项参数。选项由一个+(加号)
  11. 21 # 或者是由一个-(减号)后跟一个字符开始。一个既不是以+,也不
  12. 22 # 是以-开始的选项结束选项字符串。每次调用 getopts 命令时,它
  13. 23 # 将下一个选项的值放置在 Name 内,并将下一个要处理的参数的索引
  14. 24 # 置于 shell 变量 OPTIND 中。每当调用 shell 时,都会将
  15. 25 # OPTIND 初始化为 1。当选项以 + 开头时,会将 +
  16. 26 # 追加到 Name 中的值。
  17. 27 #
  18. 28 ##########################################################
  19. 29
  20. 30 while getopts ":a:b:c:n:" opt # 如果选项字符串中的字符后面带有“:”(冒号),那么预期此选项将带有参数。
  21. 31 # 在这里a前面有没有冒号会决定下面的*/?能不能起效
  22. 32 # 详细的说明可以参考 https://www.ibm.com/support/knowledgecenter/zh/ssw_aix_71/com.ibm.aix.cmds2/getopts.htm
  23. 33 do
  24. 34 case $opt in
  25. 35 a)
  26. 36 d1=$OPTARG # 当选项需要选项参数时,getopts 命令就将其置于变量 OPTARG 中
  27. 37 echo "d1 is $d1 "
  28. 38 ;; # 一定要记得加上末尾的;;,相当于其它语言的 break
  29. 39 b)
  30. 40 d2=$OPTARG # OPTARG 出现了,他就是取得参数的具体地方
  31. 41 echo "d2 is $d2, and destination is $d1.$d2" # Shell 里面的变量很有意思,直接这样写就能顺着输出出来
  32. 42 ;; # 双引号会解析字符串里面的转义字符和变量名,单引号不会
  33. 43 c)
  34. 44 commands=$OPTARG
  35. 45 echo " Addtional command: $commands "
  36. 46 ;;
  37. 47 n)
  38. 48 numberOfSPs=$OPTARG
  39. 49 echo "Number of SPs has changed to $numberOfSPs "
  40. 50 ;;
  41. 51 *) # * 或者 ? 匹配所有不是上面列出的东东
  42. 52 echo "Usage: check_dump -a<xxx.xxx.xxx> -b<xxx> -c<commands> -n<number of SP>
  43. 53 And the destination is IP for Unisphere."
  44. 54 exit
  45. 55 esac
  46. 56 done
  47. 57
  48. 58 i=1
  49. 59 while [ $i -le $numberOfSPs ]
  50. 60 do
  51. 61 d2=$((d2+1))
  52. 62 destination="$d1.$d2"
  53. 63 echo "=============================================
  54. 64 checking SP$i, destination is :$destination" # 很有趣吧,直接在字符串里面换行,打印输出内容也会换行!
  55. 65 i=$((i+1)) # $(()) 和 下面的 ``是一样的,表示里面的东东可以执行,需要执行以后再做其他操作
  56. 66 res="`ssh $destination svc_dc $commands`"
  57. 67 if [[ ${#res} == 234 ]];then # 比较应该深度学习的“expr指令”的缩写版本,原版有些指令少而不太好使
  58. 68 # 看到if后面跟的什么了没!!!!";then""五个字符一个不能少!
  59. 69 echo "No dumps"
  60. 70 else # 分支比较多的话还可以选择用elif[[ condition ]];then
  61. 71 echo "Found dumps:
  62. 72 $res"
  63. 73 fi
  64. 74
  65. 75 done
  66. 76 exit

就是这样子,在想到什么就再往上面丢点什么吧!

原文链接:http://www.cnblogs.com/jackablack/p/10566169.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号