我读了手册页,但我不明白 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
也可以。