Linux set 指令用法 - options

功能说明:设置shell 


语  法:set [+-abCdefhHklmnpPtuvx]


补充说明:用set 命令可以设置各种shell选项或者列 出shell变量.单个选项设置常用的特性.在某些选项之后

-o参数将特殊特性打开.在某些选项之后使用

+o参数将关闭某些特性,不带任何参数的set命令将显示shell的全部变量.除非遇到非法的选项,否则set总是返回true



参  数:


allexport                -a                        从设置开始标记所有新的和修改过的用于输出的变量         


braceexpand         -B                      允许符号扩展,默认选项  


emacs                                            在进行命令编辑的时候,使用内建的emacs编辑器, 默认选项


errexit                   -e                        如果一个命令返回一个非0退出状态值(失败),就退出.


histexpand           -H                      在做临时替换的时候允许使用!和!! 默认选项


history                                           允许命令行历史,默认选项


ignoreeof                                     禁止coontrol-D的方式退出shell,必须输入exit。


interactive-comments                  在交互式模式下, #用来表示注解


keyword             -k                     为命令把关键字参数放在环境中


monitor               -m                      允许作业控制


noclobber           -C                      保护文件在使用重新动向的时候不被覆盖


noexec                 -n                       在脚本状态下读取命令但是不执行,主要为了检查语法结构。


noglob                -d                       禁止路径名扩展,即关闭通配符     


notify                 -b                        在后台作业以后通知客户


nounset              -u                         在扩展一个没有的设置的变量的时候,    显示错误的信息     


onecmd               -t                          在读取并执行一个新的命令后退出       


physical              -P                       如果被设置,则在使用pwd和cd命令时不使用符号连接的路径 而是物理路径


posix                                             改变shell行为以便符合POSIX要求


privileged                                       一旦被设置,shell不再读取.profile文件和env文件 shell函数也不继承任何环境


verbose             -v                            为调试打开verbose模式


vi                                                  在命令行编辑的时候使用内置的vi编辑器


xtrace                  -x                            打开调试回响模式



对于不知道某些选项是否开启,可以使用以下的指令:

set -o 

查看各个参数的默认状态:


[root@master local]# set -o
allexport      off
braceexpand    on
emacs          on
errexit        off
errtrace        off
functrace      off
hashall        on
histexpand      on
history        on
ignoreeof      off
interactive-comments on
keyword        off
monitor        on
noclobber      off
noexec          off
noglob          off
nolog          off
notify          off
nounset        off
onecmd          off
physical        off
pipefail        off
posix          off
privileged      off
verbose        off
vi              off
xtrace          off





Tips : Linux Shell 编程中

1) 若程序 异常(返回 非 true)值, 程序会继续向下执行。

2)对于一些变量 APP=   若忘记设置值,可能会导致 rm -rf /${APP}   变为 rm -rf /. 这是非常危险的操作。


所以一个好的做法是在 每个 shell 中添加 

set -ue

nounset              -u                         在扩展一个没有的设置的变量的时候,    显示错误的信息     

errexit                   -e                        如果一个命令返回一个非0退出状态值(失败),就退出.


当然如果只有一个参数,也可以这么设置

set -o errexit



即一个较好的linux 脚本如下:

#!/bin/bash

set -ue

....
....




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值