なぜwhileループ中にbashがいくつかの文字を食べるのですか? whileループ中にbashが文字を摂っています
#!/bin/bash
INPUT_DIR=$1
OUTPUT_DIR=$2
rm -rf "${OUTPUT_DIR}"
mkdir -p "${OUTPUT_DIR}"
cd "${INPUT_DIR}" && find . -type f -name '*.m4a' | while IFS= read -r original
do
TMPFILE="$(mktemp --dry-run)"
IN_FILE="${INPUT_DIR}/${original}"
OUT_FILE="${OUTPUT_DIR}/${original/.m4a/.wav}"
echo "${IN_FILE} => ${TMPFILE} => ${OUT_FILE}"
(cd "${INPUT_DIR}" \
&& ffmpeg -i "${IN_FILE}" -y -f wav -acodec pcm_s16le -ac 2 "${TMPFILE}" \
)
# ... do something with "${TMPFILE}", save as ${OUT_FILE}
test -e "${TMPFILE}" && rm "${TMPFILE}"
done
ffmpeg
でラインを残し
${IN_FILE}
の先頭の文字の一部は、(ファイルが見つからない)
ffmpeg
が失敗し、表示されません。文字は
echo
コマンドの出力にもありません。
ただし、ffmpeg
行をスクリプトから削除すると、echo
コマンドの出力が正常に表示されます。
2つの入力引数の例と、関連するエコー行に欠損文字がありますか? – Dunatotatos