关闭

鸟哥Linux私房菜之学习Shell Scripts(3)

发表于:2009-12-02 10:36

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

#
Linux
#
linux

  不过,由这个例子看起来,似乎也没有什么了不起吧?sh06.sh 还比较简单呢~ 但是,如果我们考虑底下的状态,您就会知道 if then 的好处了:

  if [ 条件判断式 ]; then
  当条件判断式成立时,可以进行的指令工作内容;
  else
  当条件判断式不成立时,可以进行的指令工作内容;
  fi

  如果考虑更复杂的情况,则可以使用这个语法:

  if [ 条件判断式一 ]; then
  当条件判断式一成立时,可以进行的指令工作内容;
  elif [ 条件判断式二 ]; then
  当条件判断式二成立时,可以进行的指令工作内容;
  else
  当条件判断式一与二均不成立时,可以进行的指令工作内容;
  fi

  那我就可以将 sh06-2.sh 改写成这样:

  [root@linux scripts]# vi sh06-3.sh
  #!/bin/bash
  # Program:
  # This program will show the user's choice
  # History:
  # 2005/08/25        VBird        First release
  PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
  export PATH
  read -p "Please input (Y/N): " yn
  if [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then
  echo "OK, continue"
  elif [ "$yn" == "N" ] || [ "$yn" == "n" ]; then
  echo "Oh, interrupt!"
  else
  echo "I don't know what is your choise"
  fi

  是否程序变得很简单,而且依序判断,可以避免掉重复判断的状况,这样真的很容易设计程序的啦! ^_^ 好了,那么如果我要侦测你所输入的参数是否为 hello 呢 , 也就是说,如果我想要知道,你在程序后面所接的第一个参数 (就是 $1 啊!) 是否为 hello ,

  • 如果是的话,就显示 "Hello, how are you ?";
  • 如果没有加任何参数,就提示使用者必须要使用的参数下达法;
  • 而如果加入的参数不是 hello ,就提醒使用者仅能使用 hello 为参数。

  整个程序的撰写可以是这样的:

  [root@linux scripts]# vi sh08.sh
  #!/bin/bash
  # Program:
  # Show "Hello" from $1....
  # History:
  # 2005/08/28        VBird        First release
  PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
  export PATH
  if [ "$1" == "hello" ]; then
  echo "Hello, how are you ?"
  elif [ "$1" == "" ]; then
  echo "You MUST input parameters, ex>; $0 someword"
  else
  echo "The only parameter is 'hello'"
  fi

  然后您可以执行这支程序,分别在 $1 的位置输入 hello, 没有输入与随意输入, 就可以看到不同的输出啰~是否还觉得挺简单的啊! ^_^。事实上, 学到这里,也真的很厉害了~好了,底下我们继续来玩一些比较大一点的啰~ 我们在前一章已经学会了 grep 这个好用的玩意儿,那么多学一个叫做 netstat 的指令, 这个指令可以查询到目前主机有开启的网络服务端口口 (service ports), 相关的功能我们会在服务器架设篇继续介绍,这里您只要知道,我可以利用『 netstat -tuln 』来取得目前主机有启动的服务, 而且取得的信息有点像这样:

  [root@linux ~]# netstat -tuln
  Active Internet connections (only servers)
  Proto Recv-Q Send-Q Local Address   Foreign Address    State
  tcp        0      0 0.0.0.0:199     0.0.0.0:*          LISTEN
  tcp        0      0 :::80           :::*               LISTEN
  tcp        0      0 :::22           :::*               LISTEN
  tcp        0      0 :::25           :::*               LISTEN

  上面的重点是特殊字体的那个部分,那些特殊字体的部分代表的就是 port 啰~ 那么每个 port 代表的意义为何呢?几个常见的 port 与相关网络服务的关系是:

  80: WWW
  22: ssh
  21: ftp
  25: mail

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号