【发布时间】:2016-06-24 21:31:08
【问题描述】:
使用 bash shell:
我正在尝试逐行读取文件。
并且每一行包含两个含义完整的文件名,由"``" 分隔
文件:1 image_config.txt
bbbbb.mp4``thumb/hashdata.gif
bbbbb.mp4``thumb/hashdata2.gif
Shell 脚本
#!/bin/bash
filename="image_config.txt"
while IFS='' read -r line || [[ -n "$line" ]]; do
IFS='``' read -r -a array <<< "$line"
if [ "$line" = "" ]; then
echo lineempty
else
file=${array[0]}
hash=${array[2]}
echo $file$hash;
output=$(ffmpeg -v warning -ss 2 -t 0.8 -i $file -vf scale=200:-1 -gifflags +transdiff -y $hash);
echo $output;
# echo ${array[0]}${array[1]}${array[2]}
fi;
done < "$filename"
第一次成功执行,但当循环第二次执行时。
变量file从bbbbb.mp4丢失bbbbb
并输出以下输出
输出:
user@domain [~/public_html/Videos]$ sh imager.sh
bbbbb.mp4thumb/hashdata.gif
.mp4thumb/hashdata2.gif
.mp4: No such file or directory
lineempty
【问题讨论】:
-
虽然您的代码看起来过于复杂,但当我使用此数据运行代码时,我没有得到此输出,但文件名报告正确。您是否尝试过使用
bash -x运行它?顺便说一句,您已经标记了bash,但是当您运行它时,您使用的是sh,而不是bash。请注意,您可能会得到不同的结果。