Bash 19个字符没有任何理由消失

时间:2016-06-12 18:27:36

标签: linux bash

我尝试制作一个批处理脚本来压缩我的音频文件,我面临一个非常奇怪的问题。

这是我的代码:

var clientlist = {};
var imagelist = ["image1.jpg","image2.jpg","image3.jpg"];

function myFunction(){

var client = {};

var user = $("#username").val();
var type = $("#type").val();
var description = $("#description").val();

client["user"] = user;
client["type"] = type;
client["description"] = description;

clientlist[clientlist.length] = client;

$("#message").html("Client created");

}

以下是结果示例:

#!/bin/bash

qscale=$1
input=$2
output=$3
inputSize=$((${#input}+1))

find "$input" -type f -name "*.flac" -print0 | while read -d $'\0' a
do
    path=${a:inputSize}
    echo "Working on $path"
#    ffmpeg -i "$a" -qscale:a $qscale "$output/${path[@]/%flac/mp3}" &>/dev/null
done

如果我取消注释Working on 09 - Groove #2 (instrumental studio outtake).flac Working on 07 - Blues for Allah Sand Castles and Glass Camels Unusual Occurrences in the Desert.flac Working on 12 - Proto 18 Proper (instrumental studio outtake).flac Working on 04 - The Music Never Stopped.flac Working on 13 - Hollywood Cantana (studio outtake).flac ... 行,则以下是同一文件夹的结果:

ffmpeg

两个文件中的一个文件错过了第19个第一个字符!而且我不知道为什么。

1 个答案:

答案 0 :(得分:7)

取消注释ffmpeg行并在其上运行shellcheck报告:

Line 12:
    ffmpeg -i "$a" -qscale:a $qscale "$output/${path[@]/%flac/mp3}" &>/dev/null
    ^-- SC2095: Add < /dev/null to prevent ffmpeg from swallowing stdin.

再试一次

ffmpeg -i "$a" -qscale:a $qscale "$output/${path[@]/%flac/mp3}" &>/dev/null < /dev/null

ffmpeg以及sshmplayer因偷走while read循环中的标准输入而臭名昭着。