如何将代码从测试格式转换为 if fi 格式?

如何将代码从测试格式转换为 if fi 格式?

我有一段代码可以在终端中打开一个 bash 文件以输入 sudo 密码:

test "$IN_TERM" || {
    export IN_TERM=1
    konsole -e "$0"
    exit 0
} && true

我需要将其转换为带标签的格式if fi。我尝试了这个选项,但随后会打开无数个终端:

if [[ -n $IN_TERM ]]; then  
    export IN_TERM=1  
    else  
    konsole -e "$0"  
    exit 0
fi

谢谢。

答案1

我认为转换代码最直接的方法是:

if ! test "$IN_TERM"; then
    export IN_TERM=1
    konsole -e "$0"
    exit 0
fi

然后您可以将其重写为

if ! [[ "$IN_TERM" ]]; then
    export IN_TERM=1
    konsole -e "$0"
    exit 0
fi

或者

if [[ ! "$IN_TERM" ]]; then
    export IN_TERM=1
    konsole -e "$0"
    exit 0
fi

或者

if [[ -z "$IN_TERM" ]]; then
    export IN_TERM=1
    konsole -e "$0"
    exit 0
fi

相关内容