Bash Shell确定是否处于交互模式, 你手边有一些代码,希望仅在处于(或不处于)交互模式时运行。
解决方案
使用如下 case 语句:
#!/usr/bin/env bash
# 文件名: interactive
case "$-" in
*i*) # 在交互式shell中运行的代码位于此处
;;
*) # 在非交互式shell中运行的代码位于此处
;;
esac
讨论
变量$-
中保存了一个字符串,其中列出了当前所有的 shell 选项。如果 shell 处于交互模式,则其中会包含 i。
你也可以采用如下代码(同样有效,但更推荐上面的方法):
if [ -n "$PS1" ]; then
echo This shell is interactive
else
echo This shell is not interactive
fi
酷客网相关文章:
评论前必须登录!
注册