我是编程脚本的新手。 我在目录中有很多zip文件。我想提取它们用zip文件替换内部文件的名称,并使用正确的扩展名。报告是否存在多个文件时出错,例如" remora.txt"内。 文件" remora.txt"是一个压缩文件的ini文件,我不再使用它,但是我的zip文件很多。
示例1。 ZIp文件:maths.zip,
里面有: - " maths.doc教程" - " remora.txt"
操作: 所以脚本应该删除或删除" remora.txt"并在maths.doc中提取"教程"名为maths.doc
示例2。 ZIp文件:geo.zip,
里面有: - " geometry.doc"的例外情况。 - " geometry.doc" - " remora.txt" item
操作: 它应该放在"我在geo.zip"
中找到的不仅仅是一个文件 我是 使用linux,ubuntu 12我已完成此脚本,但无效。
#!/bin/bash
#
# Linux Shell Scripting Tutorial 1.05r3, Summer-2002
#
for archive in *.zip # First I read the zip file
do
((i++))
unzip -Z1 $archive | while read line; # I read all the files in the ZIP
do
line=( ${line//,/ } )
inside[$a]=("${line[@]}") # Here I assigne the name of the file to an array
((a++))
done
If ( $a > 2) then
echo " Too much files in file $archive "
fi
If ($a <= 2)
then
if (inside[0]!= "remora.txt")
then unzip -p $archive > $(printf "%s" $archive).doc
fi
if (inside[1]!= "remora.txt")
then unzip -p $archive > $(printf "%s" $archive).doc
fi
fi
done
答案 0 :(得分:1)
尝试逐步编写脚本。而不是编写20个语句然后尝试一次调试它们,一次写一个语句并测试以确保它在写下一个语句之前有效。
如果您运行,例如
If ( $a > 2) then
echo " Too much files in file $archive "
fi
本身,你会发现它不起作用。然后,您可以更具体地了解问题所在,并且您可以在Google或Stackoverflow上查找类似“bash if variable greater than”的内容。
查看bash tag wiki以获取有关调试和询问代码的更多有用提示。
你会找到的东西包括:
if
必须为小写then
[[ $a -gt 2 ]]
。 [[ ${inside[0]} != "remora.txt" ]]
while read ...; do ...; done < <(somecommand)
。