上QQ阅读APP看书,第一时间看更新
1.10 确定是否处于交互模式
1.10.1 问题
你手边有一些代码,希望仅在处于(或不处于)交互模式时运行。
1.10.2 解决方案
使用例 1-1 中的 case
语句。
例 1-1 ch01/interactive
#!/usr/bin/env bash
# 文件名: interactive
case "$-" in
*i*) # 在交互式shell中运行的代码位于此处
;;
*) # 在非交互式shell中运行的代码位于此处
;;
esac
1.10.3 讨论
变量 $-
中保存了一个字符串,其中列出了当前所有的 shell 选项。如果 shell 处于交互模式,则其中会包含 i
。
你也可以采用如下代码(同样有效,但更推荐使用例 1-1 中的方法):
if [ -n "$PS1" ]; then
echo This shell is interactive
else
echo This shell is not interactive
fi
1.10.4 参考
help case
help set
- 有关
case
语句的更多讲解,参见 6.14 节