Bash sh脚本不执行,但可执行内容在命令行上正确执行
下面是我用来将多个.wav文件合并为一个名为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
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'