如何编写一个包含“ ||”和“ &&”的线性测试

时间:2019-04-04 19:49:00

标签: bash

我正在尝试编写一个包含“ ||”和“ &&”的oneliner bash测试,如下所示:

$ [ [ $extension = mp4 ] || [ $extension = m4a ] || [ $extension = mp3 ] ] && echo OK || echo KO
bash: [: too many arguments
bash: [: too many arguments
KO
$ set -x
$ [ [ $extension = mp4 ] || [ $extension = m4a ] || [ $extension = mp3 ] ] && echo OK || echo KO
+ '[' '[' mp4 = mp4 ']'
bash: [: too many arguments
+ '[' mp4 = m4a ']'
+ '[' mp4 = mp3 ']' ']'
bash: [: too many arguments
+ echo KO
KO

编辑:这似乎起作用:

$ [ $extension = mp4 ] || [ $extension = m4a ] || [ $extension = mp3 ] && echo OK || echo KO
OK

0 个答案:

没有答案