Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash sh脚本不执行,但可执行内容在命令行上正确执行_Bash_Macos_Unix - Fatal编程技术网

Bash sh脚本不执行,但可执行内容在命令行上正确执行

Bash sh脚本不执行,但可执行内容在命令行上正确执行,bash,macos,unix,Bash,Macos,Unix,下面是我用来将多个.wav文件合并为一个名为output.wav的文件的命令: ffmpeg -f concat -safe 0 -i <( for f in *.wav; do echo "file '$(pwd)/$f'"; done ) output.wav 然后使用/merge-into-one执行。sh我收到错误: ./merge-into-one.sh ./merge-into-one.sh: line 1: syntax error near unexpected toke

下面是我用来将多个.wav文件合并为一个名为
output.wav
的文件的命令:

ffmpeg -f concat -safe 0 -i <( for f in *.wav; do echo "file '$(pwd)/$f'"; done ) output.wav
然后使用
/merge-into-one执行。sh
我收到错误:

./merge-into-one.sh
./merge-into-one.sh: line 1: syntax error near unexpected token `('
./merge-into-one.sh: line 1: `ffmpeg -f concat -safe 0 -i <( for f in *.wav; do echo "file '$(pwd)/$f'"; done ) output.wav'
/merge-into-one.sh
./merge-into-one.sh:第1行:意外标记“(”附近的语法错误

./merge-into-one.sh:第1行:`ffmpeg-f concat-safe 0-i您的shebang是什么?
使用
#!/usr/bin/env bash
确保只有bash语法可用……另一方面,用
.sh
扩展名命名bash脚本不是一种好的形式。最好不要使用扩展名,并鼓励用户使用shebang而不是扩展名假设它们可以运行
sh foo.sh
(当您的脚本可能实际需要bash、zsh或其他非PONIX shell时).和UNIX命令通常没有扩展;您不会运行
ls.elf
尝试使用sheband#!/bin/bash@mahendrarathod,在MacOS上
#!/bin/bash
是一个不好的选择,因为它使用了一个古老的GPLv2版本,即使用户安装了带有MacPorts/Homebrew/Nix/等的现代bash版本。
#!/usr/bin/env bash
shebang建议使用上述路径查找要使用的解释器。
./merge-into-one.sh
./merge-into-one.sh: line 1: syntax error near unexpected token `('
./merge-into-one.sh: line 1: `ffmpeg -f concat -safe 0 -i <( for f in *.wav; do echo "file '$(pwd)/$f'"; done ) output.wav'