Linux
為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…}: 替換錯誤。
我認為沒有bash,我怎樣才能讓它工作?
如果您還沒有安裝 bash,那麼 FreeBSD 的首選方法是使用埠:
cd /usr/ports/shells/bash 使安裝乾淨
如果您沒有安裝埠樹,您可以通過執行來安裝它:
portsnap 提取提取物
做這些事情中的任何一個都需要root privs。
另請注意,通常 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