用bash脚本中的命令行参数替换变量

时间:2014-04-12 09:56:47

标签: bash

我想调用脚本./archive-it.sh与文件夹名称(如project1)而没有尾随/并期望将其归档,我相信它非常简单,因为我是bash脚本的新手我被卡住了。有人可以帮忙。

但目前我在这里收到错误

$target=$(echo "$1"-`date +%m-%d-%Y-%H_%M`)

这是脚本

!/bin/bash                        
######### archive-it.sh ############

echo "Argument  $1";
$target=$(echo "$1"-`date +%m-%d-%Y-%H_%M`)
tar -czvf $target.tar.gz  $1  

echo "####################################"
echo "ARCHIVE Successfully done at :"
echo "${target}" ; 

还建议我排除.git文件夹是否合适,因为我每天只进行备份。

3 个答案:

答案 0 :(得分:3)

要分配变量,它是target="something",然后使用$target

来访问它

如果路径包含空格

,还要在$ 1附近添加引号
echo "Argument  $1";

if [[ ! -d "${1}" ]]; then
    echo "Folder '$1' doesn't exists"
    exit 1
fi

#filter git files if you want
nogitfiles="$(find "${1}" -name * | grep -v .git)"

target="$(date +"$1-%m-%d-%Y-%H_%M")"
tar -czvf "${target}.tar.gz"  ${nogitfiles}  

echo "####################################"
echo "ARCHIVE Successfully done at :"
echo "${target}" ; 

答案 1 :(得分:1)

根本不需要回声:

target="$1$(date +%m-%d-%Y-%H_%M)"

答案 2 :(得分:0)

除了分配到target,而不是$target,而不是$1date的输出,您可以在$1中添加date target=$(date +"$1-%m-%d-%Y-%H_%M") 的格式字符串:

{{1}}