需要一些帮助,因为我的shell脚本技能略低于l337 :(
我需要gzip几个文件,然后从另一个位置复制更新的文件。我需要能够以下列方式从其他脚本调用此脚本。
exec script.sh $oldfile $newfile
有人能指出我正确的方向吗?
编辑:要添加更多详细信息:
此脚本将用于每月更新上传到文件夹的某些文档,旧文档需要存档到一个压缩文件中,新文档可能有不同的名称,复制到旧文件的顶部。需要通过另一个脚本的文档案例在文档上调用脚本。此脚本的基本流程应为 -
提前致谢,
理查德
编辑:在存档文件名
上添加了模式详细信息答案 0 :(得分:2)
任何bash脚本的良好参考是Advanced Bash-Scripting Guide。
本指南解释了每个bash脚本的内容。
我将采取的基本方法是:
Move the files you want to zip to a directory your create.
(commands mv and mkdir)
zip the directory. (command gzip, I assume)
Copy the new files to the desired location (command cp)
根据我的经验,bash脚本主要是知道如何很好地使用这些命令,如果你可以在命令行上运行它,你可以在你的脚本中运行它。
另一个可能有用的命令是
pwd - this returns the current directory
答案 1 :(得分:2)
以下是基于您的说明的修改后的脚本。我使用tar
存档(使用gzip
压缩)将多个文件存储在一个存档中(单独使用gzip
无法存储多个文件)。这段代码只是表面测试 - 它可能有一两个错误,如果你在愤怒中使用它,你应该添加更多代码来检查命令成功等。但它应该可以帮到你那里。
#!/bin/bash
oldfile=$1
newfile=$2
month=`date +%B`
year=`date +%Y`
prefix="frozenskys"
archivefile=$prefix.$month.$year.tar
# Check for existence of a compressed archive matching the naming convention
if [ -e $archivefile.gz ]
then
echo "Archive file $archivefile already exists..."
echo "Adding file '$oldfile' to existing tar archive..."
# Uncompress the archive, because you can't add a file to a
# compressed archive
gunzip $archivefile.gz
# Add the file to the archive
tar --append --file=$archivefile $oldfile
# Recompress the archive
gzip $archivefile
# No existing archive - create a new one and add the file
else
echo "Creating new archive file '$archivefile'..."
tar --create --file=$archivefile $oldfile
gzip $archivefile
fi
# Update the files outside the archive
mv $newfile $oldfile
将其另存为script.sh
,然后将其设为可执行文件:
chmod +x script.sh
然后像这样跑:
./script.sh oldfile newfile
如果你愿意,可以从另一个脚本中找到``frozenskys.September.2009.tar.gz , will be created, and
newfile will replace
oldfile . You can call this script with
exec`。只需将此行放在第二个脚本中:
exec ./script.sh $1 $2
答案 2 :(得分:0)
为什么不使用版本控制?这更容易;退房,压缩。
(如果不是选项则道歉)