我是Bash脚本的新手,但是我被告知,在没有任何帮助的情况下,创建一个文件,只有在自上次运行脚本后文件被修改时才将纹理压缩为PVR格式。继承了我到目前为止的代码:
# variables
TEXTURE_TOOL=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/texturetool
INPUT_DIR="/Data/Mobile"
OUTPUT_DIR="/Data/iPhone"
IMAGE_GREP="\(.bmp\|.png\)"
OTHER_GREP="\.b3d$"
echo "Starting backup of directory $INPUT_DIR to directory $OUTPUT_DIR"
# cycle through the input directory for images we can compress
echo "Compressing textures!"
for i in $( ls -a "$INPUT_DIR" | grep $IMAGE_GREP );
do
if test "$OUTPUT_DIR/$i.pvr" -nt "$INPUT_DIR/$i"; then
# check to see output's status
echo "Compressing file $i!"
# compress and store in output directory
$TEXTURE_TOOL -m -e PVRTC --bits-per-pixel-2 -o "$OUTPUT_DIR/$i.pvr" -f PVR "$INPUT_DIR/$i"
fi
done
# cycle through the input directory for models we can export
echo "Moving models!"
for i in $( ls -a "$INPUT_DIR" | grep $OTHER_GREP );
do
# check to see output's status
echo "Moving model file $i!"
# cp to output directory
cp "$INPUT_DIR/$i" "$OUTPUT_DIR/$i"
done
使用其中一个问题,我尝试进行时间戳检查,但我不工作,我很确定,因为我不完全理解代码。
任何人都可以建议我做错了吗
谢谢,Michael A
答案 0 :(得分:4)
只有在某些文件比预期更新的情况下才能执行操作,最好使用make
。这样学习起来有点复杂,但非常有效。
答案 1 :(得分:3)
test "$OUTPUT_DIR/$i.pvr" -nt "$INPUT_DIR/$i";
检查$ OUTPUTDIR / $ i.pvr是否比$ INPUTDIR / $ i更新,我想你想要反过来这样做。
test "$INPUT_DIR/$i" -nt "$OUTPUT_DIR/$i.pvr";
要检查输入是否比输出更新。