重写freebsd的sh脚本

我有一个sh脚本:

#!/bin/bash fullpath="$1" filename="${fullpath##*/}" dir="${fullpath:0:${#fullpath} - ${#filename}}" base="${filename%.[^.]*}" ext="${filename:${#base} + 1}" if [ -f $fullpath ]; then if [ $ext != "mp4" ]; then ffmpeg -threads 4 -i $fullpath -y -vcodec libx264 -g 100 -bt 100k mp4 -vpre fast -acodec libfaac -ab 128k "$dir$base.mp4" mv -f "$dir$base.mp4" "/data/www/rfpl/htdocs/videotapes/$base.mp4" fi fi 

所以我写了Linux,现在我需要在FreeBSD下运行它,但是我对FreeBSD一无所知。 有一个错误:

./convert.sh:$ {fullpath:0 …}:错误的replace。

我觉得没有bash,我怎么能使它工作?

如果你没有安装bash,那么FreeBSD首选的方法是使用ports:

 cd / usr / ports / shells / bash
使安装干净

如果您没有安装ports树,可以运行以下命令来安装它:

 portsnap读取提取

做这些事情都需要root privities。

还要注意,通常bash被安装在/ usr / local / bin / bash中所以你需要编辑脚本的第一行。 事实上,在尝试上述之前检查bash是否已经安装。

我没有访问freebsd框,但试试这个:

 #!/bin/bash fullpath="$1" filename=$(basename $fullpath) dir=$(dirname $fullpath) ext=$(echo $filename | awk -F. '{ print $NF }') base=$(echo $filename | sed "s/.${ext}//") if [ -f $fullpath ]; then if [ $ext != "mp4" ]; then ffmpeg -threads 4 -i $fullpath -y -vcodec libx264 -g 100 -bt 100k mp4 -vpre fast -acodec libfaac -ab 128k "$dir/$base.mp4" mv -f "$dir/$base.mp4" "/data/www/rfpl/htdocs/videotapes/$base.mp4" fi fi