"意外的操作员"比较shell脚本中的字符串时出错

时间:2012-02-11 16:57:40

标签: linux shell

我正在尝试创建一个运行命令的shell脚本,并在运行其他脚本的输出非空时播放音乐。到目前为止,我有这个。但是,我不断在最后一行收到“意外操作员”错误。代码有什么问题?

作为补充说明,我已经验证了myscript工作正常,并且从命令行运行vlc也是如此。

#!/bin/sh

TOF=`myscript | cat`
EMPTYSTR=""

if [ "$TOF" == "$EMPTYSTR" ]; then
    echo "vlc somemusicfile.mp3"
fi

3 个答案:

答案 0 :(得分:4)

使用=测试字符串相等性。 (事实上​​,这里的平等是错误的。你想要使用不平等)。但是,您只需使用-n "$TOF"来检查非空字符串。

此外,使用|cat是不必要的。

答案 1 :(得分:2)

test -z "$(myscript)" || echo "vlc somemusicfile.mp3"

(虽然我不知道您的代码有什么问题,但也许我错过了一些玄力,您可以尝试将#!/bin/sh更改为#!/bin/bash)。

答案 2 :(得分:1)

尝试:

#!/bin/sh

TOF=`myscript | cat`

if [[ -z "$TOF" ]]
then
  echo "vlc somemusicfile.mp3"
fi

您也可以在成功时将脚本更改为return 0,并在失败时将return 1更改为

$ cat myscript
#!/bin/bash

if [[ -s somemusicfile.mp3 ]]
then
  return 0
else
  echo "File does not contain music" 
  return 1
fi

并以这种方式检查:

#!/bin/bash

if myscript
then
  echo "vlc somemusicfile.mp3"
fi
相关问题