![Bash Shell“onecmd”选项使用目的](https://linux22.com/image/176396/Bash%20Shell%E2%80%9Conecmd%E2%80%9D%E9%80%89%E9%A1%B9%E4%BD%BF%E7%94%A8%E7%9B%AE%E7%9A%84.png)
我读了手册页,但我不明白 bash 选项的目的onecmd
。如果我使用该set -o onecmd
命令,shell 会立即退出。我的期望是它在退出之前等待我再输入一个命令,但这并没有发生。
那么这个选项和exit
命令一样吗?
为什么 bash 提供这个选项?
有人可以给我一个如何正确使用此选项的例子吗?
答案1
至于为什么,我不知道,但是注意,你可以在启动shell时在命令行上设置选项,例如这里,内壳确实读取了一个命令,然后退出
bash$ PS1='onecmd$ ' bash -t
onecmd$ echo moi;
moi
bash$
而且它在读取一个命令后并没有真正退出,而是读取并执行至少一个完整的命令线。这与两个命令相同:
bash$ PS1='onecmd$ ' bash -t
onecmd$ echo moi; echo hei
moi
hei
bash$
当然,使用 eg&&
或将整组命令包装起来if true; then ... fi
也可以。