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]#
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