Macos shell字符串比较不起作用

Macos shell字符串比较不起作用,macos,shell,Macos,Shell,我试图通过shell测试节能器的启动和关闭设置,只有我的字符串比较总是以no响应 这是我的密码 #!/bin/sh pmset repeat shutdown MTWRFSU 19:00:00 wakeorpoweron MTWRF 07:00:00 test=`pmset -g sched` schd="Repeating power events: wakepoweron at 7:00AM weekdays only shutdown at 7:00PM every day" echo

我试图通过shell测试节能器的启动和关闭设置,只有我的字符串比较总是以no响应

这是我的密码

#!/bin/sh

pmset repeat shutdown MTWRFSU 19:00:00 wakeorpoweron MTWRF 07:00:00

test=`pmset -g sched`
schd="Repeating power events: wakepoweron at 7:00AM weekdays only shutdown at 7:00PM every day"
echo $schd;
echo $test;
if [ '$test' = '$schd' ]; then 
    echo "yes"
else 
    echo "no"
fi
我做错了什么

添加了此选项,并按预期返回yes

test2="Repeating power events: wakepoweron at 7:00AM weekdays only shutdown at 7:00PM every day"
schd2="Repeating power events: wakepoweron at 7:00AM weekdays only shutdown at 7:00PM every day"

if [ "$test2" = "$schd2" ]; then 
    echo "yes"
else 
    echo "no"
fi

我怀疑我的test命令的输出中有隐藏字符,因为其他一切似乎都正常。是否有某种方法来确认和消除它们,如果这确实是问题所在?

变量引用没有在单引号内解决;请改用双引号:

if [ "$test" = "$schd" ]; then...
另外,请注意,如果将
$schd
$test
解析为空字符串,则上述测试将不起作用。解决此问题的常见技巧如下:

if [ x"$test" = x"$schd" ]; then...

变量引用不在单引号内解析;请改用双引号:

if [ "$test" = "$schd" ]; then...
另外,请注意,如果将
$schd
$test
解析为空字符串,则上述测试将不起作用。解决此问题的常见技巧如下:

if [ x"$test" = x"$schd" ]; then...

如果您认为$test可能有额外的字符,请尝试测试$test是否包含$schd:

试着改变

echo $schd;
echo $test;


echo“schd=>$schd$test如果您认为$test可能有额外的字符,请尝试测试$test是否包含$schd:

试着改变

echo $schd;
echo $test;


echo“schd=>$schd$test只有在字符串没有双引号的情况下才需要
x
技巧(尽管它也不会影响任何东西…)我已经尝试过使用双引号,但无论如何都改变了它们,然后也尝试了您的解决方法是否可能隐藏字符(如\n\r)会导致比较问题只有在字符串没有双引号的情况下才需要使用
x
技巧(尽管这也不会造成任何影响…)我已经尝试使用双引号,但无论如何都更改了双引号,然后也尝试了您的解决方法是否可能隐藏字符(如\n\r)导致比较issue@chepner我把它改为双引号,因为我已经尝试了双引号,但仍然没有成功,因此是的,还有一个问题它仍然不能与double一起工作quotes@chepner我把它改成了双引号,因为我已经尝试了双引号,但仍然没有成功,所以是的,仍然有一个问题,因为它仍然不能与双引号一起工作。就是这样!!!尽管我试着把由于缩进而产生的返回结果放进去,但结果是不正确的,但这让我看到了问题,就是它!!!尽管我试着把由于缩进的回报,它来了不正确的,但这让我看到了问题