gpt4 book ai didi

unix - "x$VARIABLE"中 x 的 shell 脚本用途

转载 作者:行者123 更新时间:2023-12-04 01:33:05 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why do shell script comparisons often use x$VAR = xyes?

(7 个回答)


7年前关闭。




我正在查看一些 shell 脚本 - comarison shcu 中 x 的目的是什么

 if [ "x$USER" != "x$RUN_AS_USER" ]; then
su - $RUN_AS_USER -c "$CATALINA_HOME/bin/startup.sh"
else
$CATALINA_HOME/bin/startup.sh
fi

最佳答案

如果其中一个变量为空,则确保在替换中不会得到空字符串是一种技巧。通过放置 x在两侧,这与直接比较变量相同,但两侧将始终为非空。

这是一个古老的混杂,当脚本被编写为时更有意义:

if [ x$USER != x$RUN_AS_USER ]

如果您刚刚拥有 $USER它是空的,那么你最终会得到
if [  != root ]   # Syntax error

x你明白了,这是更好的:
if [ x != xroot ]

但是,当引用变量时 x是不必要的,因为引号中的空字符串并未完全删除。它仍然显示为 token 。因此
if [ "$USER" != "$RUN_AS_USER" ]   # Best

是最好的写法。在两个变量都为空的最坏情况下,您会得到这是一个有效语句:
if [ "" != "" ]

关于unix - "x$VARIABLE"中 x 的 shell 脚本用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1805663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com