当前位置:  技术问答>linux和unix

一些shell脚本看不懂,那位不吝赐教

    来源: 互联网  发布时间:2015-04-26

    本文导语:  whoseargs="client" while [ x"$1" != x ]; do     case "$1" in     # '' required to prevent cpp from treating "/*" as a C comment.     /''*|./''*) if [ "$whoseargs" = "client" ]; then     if [ x"$clientargs" = x ]; then client="$1"  ...

whoseargs="client"
while [ x"$1" != x ]; do
    case "$1" in
    # '' required to prevent cpp from treating "/*" as a C comment.
    /''*|./''*)
if [ "$whoseargs" = "client" ]; then
    if [ x"$clientargs" = x ]; then
client="$1"
    else
clientargs="$clientargs $1"
    fi
else
    if [ x"$serverargs" = x ]; then
server="$1"
    else
serverargs="$serverargs $1"
    fi
fi
;;
         。
         。
         。
其中 1)while 语句的条件中的  x"$1" != x 不清楚是怎么回事
     2)case语句中的  /''*|./''*)  也搞不懂

|
Linux程序设计入门 - bash, Shell Scripts 
  众所皆知地,UNIX上以小工具着名,利用许多简单的小工具,来完成原本需要 
   
  大量软体开发的工作,这一点特色,使得UNIX成为许多人心目中理想的系统平 
   
  台。  
 
   
  在众多的小工具中,Shell Script算得上是最基本、最?nbsp;system is FreeBSD"  
   
          echo "Do FreeBSD stuff here..."  
   
      ;;  
   
      *)  
   
          echo "Unknown system : $SYSTEM"  
   
          echo "I don't what to do..."  
   
      ;;  
   
  esac  
 
 
   
   select name [ in word; ] do list ; done 
 
   
  select顾名思义就是在word中选择一项  
 
   
  范例 
 
   
  #!/bin/sh  
 
   
  WORD="a b c"  
 
   
  select i in $WORD ; do  
   
    case $i in  
   
      a)  
   
        echo "I am A"  
   
      ;;  
   
      b)  
   
        echo "I am B"  
   
      ;;  
   
      c)  
   
        echo "I am C"  
   
      ;;  
   
      *)  
   
        break;  
   
      ;;  
   
    esac  
   
  done  
 
   
  执行结果 
 
   
  [foxman@foxman bash]# ./select_demo  
   
  1) a  
   
  2) b  
   
  3) c  
   
  #? 1  
   
  I am A  
   
  1) a  
   
  2) b  
   
  3) c  
   
  #? 2  
   
  I am B  
   
  1) a  
   
  2) b  
   
  3) c  
   
  #? 3  
   
  I am C  
   
  1) a  
   
  2) b  
   
  3) c  
   
  #? 4  
   
  [foxman@foxman bash]#  
 
 
 
   
  if list then list [ elif list then list ] ... [ else list ] fi 
 
   
  几种可能的写法  
 
   
  if list then  
   
    do something here  
   
  fi  
 
   
  if list then  
   
    do something here  
   
  else  
   
    do something else here  
   
  fi  
 
   
  if list then  
   
    do something here  
   
  elif list then  
   
    do another thing here  
   
  fi  
 
   
  if list then  
   
    do something here  
   
  elif list then  
   
    do another thing here  
   
  else  
   
    do something else here  
   
  fi  
   
     
   
     
   
     
   
     
 
   
  这里要迁扯到Exit Status的问题,等我将Exit Status的问题说明完再回来继 
   
  续。  
 
 
   
  while list do list done/until list do list done 
 
   
  范例一 : 无限圈写法 
 
   
  #!/bin/sh  
 
   
  while : ; do  
   
    echo "do something here"  
   
    sleep 5  
   
  done  
 
   
  范例二    
  这里要迁扯到Exit Status的问题,等我将Exit Status的问题说明完再回来继续。     
  [ function ] name () { list; }    
  范例    
  function func(arg1,arg2) {  
   
    echo $arg1  
   
    echo $arg2  
   
    return 1  
   
  }  
 
   
  类同於Pascal中的function。  
 
   
  bash内建指令集 
 
   
   .  filename [arguments]  
   
  source filename [arguments]  
 
   
  由filename中读取命令,并执行。  
   
  您会在/etc/rc.d/*中发现很多  
   
  . /xxxx  
   
  的指令,而xxxx的permission都不是可执行的。事实上,在tcsh中,需要用  
   
  source /xxxx  
   
  来做同样的指令。  
   
  注意到"."的後面是有空格的。filename是内含指令的纯文字档即可,无须 
   
  chmod 755 filename。  
 
   
  范例 
 
   
  filename : my_source  
 
   
  DEV=lo  
   
  IP=127.0.0.1  
   
  NETMASK=255.0.0.0  
   
  BROADCAST=127.255.255.255  
 
   
  ifconfig $IP netmask $NETMASK broadcast $BROADCAST dev $DEV  
 
   
  接下来  
   
  . /path/my_source  
   
  或  
   
  source my_source  
 
   
  便可执行该script,而不需要"chmod 755 my_source"  
 
   
  alias [name[=value] ...]  
 
   
   称  
   
  例如您如果来自DOS的世界,对UNIX的指令不习惯,可用alias来修改,以符合 
   
  您的习惯。  
 
   
  范例 
 
   
  alias ls="ls --color"  
   
  alias dir="ls"  
   
  alias cd..="cd .."  
   
  alias copy="cp -f" # dangerous, recommend, cp -i  
   
  alias del="rm -f" # dangerous, recommend, rm -i  
   
  alias move="mv -f" # dangerous, recommend, mv -i  
   
  alias md="mkdir"  
   
  alias rd="rmdir"  
 
   
  unalias [-a] [name ...]  
 
   
  unalias取消alias的设定。unalias -a将全部alias取消。  
 
   
  范例 
 
   
  unalias copy  
 
   
  bg [jobspec]  
   
  fg [jobspec]  
 
   
  jobs [-lnp] [ jobspec ... ]  
   
  jobs -x command [ args ... ]  
   
     
   
     
 
   
  kill [-s sigspec | -sigspec] [pid | jobspec] ...  
   
  kill -l [signum]  
   
     
 
   
  wait [n]  
 
   
  bind [-m keymap] [-lvd] [-q name]  
   
  bind [-m keymap] -f filename  
   
  bind [-m keymap] keyseq:function-name  
 
   
  break [n]  
 
   
  控制圈中使用  
 
   
  范例 
   
     
 
   
  continue [n]  
 
   
  控制圈中使用  
 
   
  范例 
 
   
  exit [n]  
 
   
  离开程序。n是Exit Status。  
 
   
  return [n]  
 
   
  在function中使用。n为返回值,其作用与Exit Status一样。  
 
   
  builtin shell-builtin [arguments]  
 
   
  cd [dir]  
 
   
  command [-pVv] command [arg ...]  
 
   
  declare [-frxi] [name[=value]]  
   
  typeset [-frxi] [name[=value]]  
 
   
  dirs [-l] [+/-n]  
 
   
  echo [-neE] [arg ...]  
 
   
  enable [-n] [-all] [name ...]  
 
   
  eval [arg ...]  
 
   
  exec [[-] command [arguments]]  
 
   
  export [-nf] [name[=word]] ...  
   
  export -p  
 
   
  set [--abefhkmnptuvxldCHP] [-o option] [arg ...]  
 
   
  unset [-fv] [name ...]  
 
   
  fc [-e ename] [-nlr] [first] [last]  
   
  fc -s [pat=rep] [cmd]  
 
   
  getopts optstring name [args]  
 
   
  hash [-r] [name]  
 
   
  help [pattern]  
 
   
  history [n]  
   
  history -rwan [filename]  
 
   
  let arg [arg ...]  
 
   
  local [name[=value] ...]  
 
   
  logout  
 
   
  popd [+/-n]  
 
   
  pushd [dir]  
   
  pushd +/-n  
 
   
  pwd  
 
   
  read [-r] [name ...]  
 
   
  readonly [-f] [name ...]  
   
  readonly -p  
 
   
  shift [n]  
 
   
  suspend [-f]  
 
   
  test expr  
   
  [ expr ]  
 
   
  times  
 
   
  trap [-l] [arg] [sigspec]  
 
   
  type [-all] [-type | -path] name [name ...]  
 
   
  ulimit [-SHacdfmstpnuv [limit]]  
 
   
  umask [-S] [mode]  
   
     
   
  bash内建叁数 
 
   
  bash的内建叁数很多,你可以自行"man bash"查一查。这里我只说明一些常用 
   
  及重要的。  
 
   
  PPID : 该bash的呼叫者process ID.  
 
   
  PWD : 目前的工作目录。  
 
   
  OLDPWD : 上一个工作目录。  
 
   
  HOSTTYPE : 机器种类。  
 
   
  OSTYPE : 作业系统名称。  
 
   
  PATH : 命令搜寻路径。  
   
                
   
  PATH="/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:."  
 
   
  HOME : 目前使用者的home directory;  
 
   
  PS1 :   The  value  of  this  parameter  is expanded (see PROMPTING  
   
                below) and used as the primary prompt string.  The  
   
  default  
   
                value is ``bash$ ''.  
 
   
  PS2 :   The  value  of  this  parameter is expanded and used as the  
   
                secondary prompt string.  The default is ``> ''.  
 
   
  PS3 :   The value of this parameter is used as the prompt  for  the  
   
                select command (see SHELL GRAMMAR above).  
 
   
  PS4 :   The  value  of  this parameter is expanded and the value is  
   
                printed before each command bash displays during an  
   
  execu-  
   
                tion  trace.  The first character of PS4 is replicated 
   
  mul-  
   
                tiple times, as necessary, to indicate multiple  levels 
   
    of  
   
                indirection.  The default is ``+ ''.  
 
 
   
  OK STATION, Webmaster, Brian Lin  
   
     
   

|
厉害

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • shell脚本如何调用另外一个shell脚本的函数?
  • 急救!关于Shell脚本删除过期文件的问题,Shell脚本达人乱入
  • shell 脚本中命令别名在脚本外无法使用
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • C语言调用shell脚本后,通过何种方法能获取脚本中变量的值
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集 iis7站长之家
  • 一个shell执行另一个带参数shell脚本????????????
  • 如何给shell脚本加密,脚本中有密码。最好是比较直接的,不要说让用 shc
  • Shell脚本调用Sql脚本并向其中传递变量
  • 请问,Shell中如何执行另外一个Shell脚本?
  • 如何传递参数给linux shell 脚本(当脚本从标准输入而不是从文件获取时)
  • nohup执行的shell脚本,全局变量不能传递到脚本中使用吗?
  • cd、zip等命令在shell提示符下能执行,在shell脚本中为什么不能执行呢?
  • shell脚本问题 关于父脚本和子脚本的问题
  • shell脚本错误输出
  • 请教shell脚本启动程序
  • 关于shell脚本的。
  • 关于arm linux下的别名配置脚本如何在进入用户时让shell执行的问题,如bashrc,profile,.bash_profile等脚本,寻求高手解答
  • 高分请教关于Shell脚本执行中断问题?
  • linux shell脚本
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • linux bash shell命令:grep文本搜索工具简介
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 菜鸟问问题:shell是什么呢?普通的ls、cp、pwd这些命令算不算shell呢?如何把自己写的文件变成shell呢?
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • shell变量和子shell的问题请教
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • 请问“当前shell”和“子shell”的区别?
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3