Bash Shell确定是否处于交互模式

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

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!