我正在尝试编写一个包含“ ||”和“ &&”的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