gpt4 book ai didi

Shell脚本测试命令

转载 作者:行者123 更新时间:2023-11-28 21:32:47 25 4
gpt4 key购买 nike

我编写了以下 shell 脚本。

#! /bin/sh

foo=asdfqwer/asdfxv

if [ $foo = */* ]
then
echo bad
else
echo good
fi

在测试命令中,我们可以像这样比较字符串和模式,

[ string = pattern ]

[ string == pattern ]

然而,上面的脚本总是在终端中打印“good”并且还有如下错误:

[ : asdfqwer/asdfxv : unexpected operator

有人能告诉我为什么以及如何比较 shell 脚本中的 stirng 和模式吗?

最佳答案

test 命令(或 [ 命令)不进行全局比较。相反,shell 正在扩展 */* 以匹配目录中的文件,并将它们替换为该命令。据推测,其中一个文件名被解析为 [ 命令的运算符,并且是无效的。

与 glob 进行比较的最佳方法是 case:

#!/bin/sh

foo=asdfqwer/asdfxv

case "$foo" in
*/*) echo bad ;;
*) echo good ;;
esac

关于Shell脚本测试命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13317605/

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