set命令简介

来源:互联网 发布:java 静态变量 泛型 编辑:程序博客网 时间:2024/04/30 18:05

set命令参数:

  • -a  标示已修改的变量,以供输出至环境变量。
  • -b  使被中止的后台程序立刻回报执行状态。
  • -C  转向所产生的文件无法覆盖已存在的文件。
  • -d  Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。
  • -e  若指令传回值不等于0,则立即退出shell。
  • -f   取消使用通配符。
  • -h  自动记录函数的所在位置。
  • -H Shell  可利用"!"加<指令编号>的方式来执行history中记录的指令。
  • -k  指令所给的参数都会被视为此指令的环境变量。
  • -l  记录for循环的变量名称。
  • -m  使用监视模式。
  • -n  只读取指令,而不实际执行。
  • -p  启动优先顺序模式。
  • -P  启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。
  • -t  执行完随后的指令,即退出shell。
  • -u  当执行时使用到未定义过的变量,则显示错误信息。
  • -v  显示shell所读取的输入值。
  • -x  执行指令后,会先显示该指令及所下的参数。
  • +<参数>  取消某个set曾启动的参数。例子set -x:

    在脚本文件中加入了命令set –x ,那么在set命令之后执行的每一条命令以及加载命令行中的任何参数都会显示出来,每一行都会加上加号(+),提示它是跟踪输出的标识,在子shell中执行的shell跟踪命令会加2个叫号(++)。

    下面来看看演示脚本:

       1:  [root@centos6 shell]# cat set-x.sh
       2:  #!/bin/bash
       3:  #set -x
       4:  echo -n "Can you write device drivers?"
       5:  read answer
       6:  answer=$(echo $answer | tr [a-z] [A-Z])
       7:  if [ $answer = Y ]
       8:  then
       9:          echo "Wow,you must be very skilled"
      10:  else
      11:          echo "Neither can I,I am just an example shell script"
      12:  fi
      13:  [root@centos6 shell]# sh set-x.sh
      14:  Can you write device drivers?y
      15:  Wow,you must be very skilled
      16:  [root@centos6 shell]# sh set-x.sh
      17:  Can you write device drivers?n
      18:  Neither can I,I am just an example shell script
      19:  [root@centos6 shell]#

     

    上面的脚本内容里面,我吧set –x  这一行注释掉了,我们平时都是看到这种效果,下面我将把set –x 这个选项打开,来看看效果:

       1:  [root@centos6 shell]# sh set-x.sh
       2:  + echo -n 'Can you write device drivers?'
       3:  Can you write device drivers?+ read answer
       4:  y
       5:  ++ echo y
       6:  ++ tr '[a-z]' '[A-Z]'
       7:  + answer=Y
       8:  + '[' Y = Y ']'
       9:  + echo 'Wow,you must be very skilled'
      10:  Wow,you must be very skilled
      11:  [root@centos6 shell]# sh set-x.sh
      12:  + echo -n 'Can you write device drivers?'
      13:  Can you write device drivers?+ read answer
      14:  n
      15:  ++ echo n
      16:  ++ tr '[a-z]' '[A-Z]'
      17:  + answer=N
      18:  + '[' N = Y ']'
      19:  + echo 'Neither can I,I am just an example shell script'
      20:  Neither can I,I am just an example shell script
      21:  [root@centos6 shell]#

    参考:http://world77.blog.51cto.com/414605/859129

    http://www.runoob.com/linux/linux-comm-set.html

  • 0 0