shell set 参数
在Shell脚本中,`set` 是一个内建命令,用于设置或更改shell的行为。它常与各种选项一起使用,以修改脚本的执行方式。
以下是一些常见的 `set` 选项和它们的用途:
1. -x - 打印出执行的每一个命令。
```bash
set -x
echo "Hello, World!"
set +x
```
2. -v - 打印出每一个输入行的内容。
```bash
set -v
echo "Hello, World!"
set +v
```
3. -e - 一旦有命令返回非零退出状态,就立即退出脚本。
```bash
set -e
! command_that_fails  这将导致脚本退出
set +e
```
4. -u - 当尝试使用未设置的变量时,脚本将退出。
```bash
set -u
echo $UNSET_VARIABLE  这将导致脚本退出
set +u
```
shell脚本返回执行结果5. -o pipefail - 在管道命令中,只有当所有的命令都成功时,整个管道命令才返回成功。否则,它会返回第一个失败的命令的退出状态。
6. -n - 只读取并检查命令,而不执行它们。这主要用于检查脚本中的语法错误。
7. -o history (或 `+o history`) - 允许或禁止命令历史记录。默认情况下,bash 保存命令历史记录。
8. -o noglob - 禁用通配符扩展。例如,`echo .txt` 将不会展开为当前目录下的所有 .txt 文件名。
9. -o notify (或在 `PS2` 中使用 `\c` 或 `\C`) - 当在交互式shell中时,这将在每条命令之前打印一个提示符。这有助于看到正在执行的命令。
10. -o errtrace - 这将使得所有未捕获的错误信号被传播到 `ERR` trap。这对于确保错误被处理很有用。
11. -o functrace - 这将使得所有函数调用被传播到 `FUNC` trap。这对于调试函数很有用。
12. -o nounset - 当尝试使用未设置的变量时,这将引发一个错误。这对于防止未定义的变量引起的问题很有用。
13. -o xtrace (或简写为 `-x`) - 这将在执行每个命令之前打印它,类似于 `echo`。这对于调试脚本很有用。
14. -i - 这将使得脚本在交互模式下运行,允许你从键盘输入命令。
15. -c - 允许你直接在 `set` 命令后面输入命令序列。例如:`set -e; command1; command2;` 这将使 `command1` 和 `command2` 在错误时退出脚本。
16. -a - 这将使得所有变量都被打印出来。这对于查看所有已设置的变量很有用。
17. -F - 在函数退出时打印函数名和退出状态。这对于调试很有用。
18. -r - 禁用所有已设置的陷阱(traps)。这对于确保脚本不会意外地捕获和处理某些信号很有用。
19. -h - 当设置了此选项,shell 将尝试使用 `getopts` 来解析位置参数,这有助于处理带有选项的命令行参数。例如:`./ -a --file `。
20. -P - 启用解析点(解析点是在一个扩展或替换完成之前的位置)。这对于解析更复杂的表达式很有用。
21. -T - 在读取任何输入之前立即退出脚本,即使没有错误发生。这对于测试脚本的边界条件很有用。
22. -C - 禁用文件名生成(也就是通配符扩展)。这对于确保不会意外地展开文件名很有用。例如:`echo .txt` 将不会展开为文件名列表,而是直接输出 "."。
23. -k (或 `+k`) - 允许或禁止在位置参数上设置本地变量。当禁用了此选项(默认),你只能在位置参数之后设置变量(例如:`./ arg var=value`)。当启用了此选项,你可以在任何位置设置变量(例如:`./ arg var=value arg2`)。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。