linux set命令详解
命令格式set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]set命令的主要作用是设置SHELL的属性, 第一组与第二组都是set的选项,+号表示关闭选项,-号表示打开选项,最后一组arg是位置参数。 分别会把arg 赋值给$1,$2 ,...optionoption-name说明--signifies the end of an opt
·
命令格式
set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
set
命令的主要作用是设置SHELL的属性, 第一组与第二组都是set的选项,+
号表示关闭选项,-
号表示打开选项,最后一组arg
是位置参数。 分别会把arg 赋值给$1
,$2
,...
option | option-name | 说明 |
---|---|---|
-- | signifies the end of an option list. This option is primarily useful when values listed after the options start with a dash themselves.大概意思是,不让后面的带- 的arg理解为set的参数。 | |
-a | allexport | 标示已修改的变量,以供输出至环境变量。 |
-b | notify | 使被中止的后台程序立刻 报告 执行状态。 |
-B | braceexpand | 启用brace expansion 。默认启用。 |
-C | noclobber | 重定向所产生的文件无法覆盖已存在的文件。‘>’, ‘>&’, ‘<>’ |
-d | Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。 | |
-e | errexit | 若指令传回值不等于0,则立即退出shell。 |
-f | noglob | 取消使用通配符。 |
-h | hashall | 自动记录函数的所在位置。 |
-H | Shell:可利用"!"加的方式来执行history中记录的指令。 | |
-k | keyword | 指令所给的参数都会被视为此指令的环境变量。 |
-l | 记录for循环的变量名称。 | |
-m | monitor | 启用Job control,使用监视模式。 |
-n | noexec | 只读取指令,而不实际执行。通常用于检查脚本语法。 |
-p | privileged | 启用 privileged 模式,$BASH_ENV 和 $ENV 文件不会被执行,SHELLOPTS , BASHOPTS , CDPATH and GLOBIGNORE 变量被忽略 |
-P | physical | 启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。 |
-t | 执行完随后的指令,即退出shell。 | |
-u | nounset | 当执行时使用到未定义过的变量,则显示错误信息。 |
-v | verbose | 显示shell所读取的输入值。 |
-x | xtrace | 执行指令后,会先显示该指令及所下的参数。 |
示例代码
#!/bin/sh
set -e
# first arg is `-f` or `--some-option`
# or first arg is `something.conf`
if [ "${1#-}" != "$1" ] || [ "${1%.conf}" != "$1" ]; then
set -- redis-server "$@"
fi
# allow the container to be started with `--user`
if [ "$1" = 'redis-server' -a "$(id -u)" = '0' ]; then
find . \! -user redis -exec chown redis '{}' +
exec su-exec redis "$0" "$@"
fi
exec "$@"
参考
https://www.computerhope.com/unix/uset.htm
https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
更多推荐
已为社区贡献6条内容
所有评论(0)