不使用相同名称的触发命令进行比较

问题描述 投票:0回答:1

所以我正在尝试进行比较,而恰好是我正在检查的值与计算机上的命令具有相同的名称是一个问题。

这是我运行的命令。

if $current_branch != "HEAD"; then echo '1'; fi;

这是结果,因为你可以看到HEAD程序运行。

400 URL must be absolute
Content-Type: text/plain
Client-Date: Thu, 01 Mar 2018 16:45:48 GMT
Client-Warning: Internal response

200 OK
Cache-Control: no-store, no-cache, must-revalidate, max-age=0
Connection: keep-alive
Date: Thu, 1 Mar 2018 16:45:49 GMT
Server: PWS/8.3.1.0.8
Vary: Accept-Encoding
Content-Type: text/html; charset=utf-8
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Access-Control-Allow-Origin: https://www.head.com
Client-Date: Thu, 01 Mar 2018 16:45:49 GMT
Client-Peer: 151.249.91.221:443
Client-Response-Num: 1
Client-SSL-Cert-Issuer: /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
Client-SSL-Cert-Subject: /C=US/ST=California/L=Campbell/O=CDNetworks Inc./CN=support2.cdnetworks.net
Client-SSL-Cipher: ECDHE-RSA-AES256-SHA
Client-SSL-Socket-Class: IO::Socket::SSL
Content-Security-Policy: frame-ancestors 'self' https://head.testing-varnish.symmetrics.de
Set-Cookie: geoip=IC; expires=Sat, 31-Mar-2018 16:45:49 GMT; Max-Age=2592000; path=/; domain=head.com
Set-Cookie: lang=en; expires=Sat, 31-Mar-2018 16:45:49 GMT; Max-Age=2592000; path=/; domain=head.com
Set-Cookie: currentLangId=1; expires=Sat, 31-Mar-2018 16:45:49 GMT; Max-Age=2592000; path=/; domain=head.com
Set-Cookie: root=1; expires=Sat, 31-Mar-2018 16:45:49 GMT; Max-Age=2592000; path=/; domain=head.com
X-Frame-Options: SAMEORIGIN
X-Px: nc h0-s42.p1-arn ( h0-s4012.p6-lhr>CONN), nc h0-s4012.p6-lhr ( h0-s4102.p11-fra), nc h0-s4102.p11-fra ( origin)

那么我如何避免这种情况发生并且没有命令与我想要比较的字符串值冲突?

sh
1个回答
1
投票

if的论据总是一个命令。您可能正在寻找比较字符串的特殊命令[(aka test)。

if [ "$current_branch" != "HEAD" ]; then
    echo '1'
fi

注意要求在[]标记的两边都有空格,并且要求引用可能包含shell元字符的字符串。

根据您是否需要pre-POSIX兼容性,您可能还想反转否定。另一方面,在像Bash和Ksh这样的现代贝壳中,你可能想要使用更强大和多功能的替代[[

对于对称性具有终止]的要求纯粹是美学的,但仍然是要求。原始的Bourne shell没有内置于shell本身的字符串比较功能,这很奇怪,但是,这就是我们最终的结果。

顺便说一句,如果您的示例代表您的实际代码,您可能希望使用更简约的简写语法

 [ "$current_branch" = "HEAD" ] || echo '1'
© www.soinside.com 2019 - 2024. All rights reserved.