我正在尝试创建一个运行命令的shell脚本,并在运行其他脚本的输出非空时播放音乐。到目前为止,我有这个。但是,我不断在最后一行收到“意外操作员”错误。代码有什么问题?
作为补充说明,我已经验证了myscript工作正常,并且从命令行运行vlc也是如此。
#!/bin/sh
TOF=`myscript | cat`
EMPTYSTR=""
if [ "$TOF" == "$EMPTYSTR" ]; then
echo "vlc somemusicfile.mp3"
fi
答案 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