2013-10-16 122 views
1

我正在使用FPM创建Debian软件包,并且遇到了一些小问题。 我的bash脚本需要5个参数。将可变数量的参数传递给命令

TARGET=$1 
VERSION=$2 
DESCRIPTION=$3 
DEPENDENCIES=$4 
REVISION=$5 

的麻烦的一个是$ 4,其中I传递给它下面的字符串

-D “易于传输-HTTPS> 0.8.16〜exp12ubuntu10.15” -d“的mongodb> 1: 2.0.4-1ubuntu2" -d “NTP> 1:4.2.6.p3 + DFSG-1ubuntu3.1”

双引号是转义我的字符串,所以当我echo $DEPENDENCIES,引号正确显示。

FPM使用-d标志可以多次使用,并且我需要能够将我的脚本中的参数列表传递给fpm。

我想这样做:

fpm ...blah blah details... $DEPENDENCIES path 

$相关内容应该通过多个标志以FPM,但似乎只承认第一个。如果我手动写出参数,它可以正常工作,但尝试使用字符串传递参数不起作用。

我不确定发生了什么事。帮帮我?

回答

8

这将有助于阅读:http://mywiki.wooledge.org/BashFAQ/050

如果我是你,我会重新安排你的参数

#!/bin/bash 
TARGET=$1 
VERSION=$2 
DESCRIPTION=$3 
REVISION=$4 
shift 4 
DEPENDENCIES=("[email protected]") 

依赖是的参数,正确分离“其他地区”。您将调用脚本这样

./script tgt ver "this is the description" rev-1.1.1 -d "apt-transport-https > 0.8.16~exp12ubuntu10.15" -d "mongodb > 1:2.0.4-1ubuntu2" -d "ntp > 1:4.2.6.p3+dfsg-1ubuntu3.1" 

在脚本中,依赖数组将包含这些元素

DEPENDENCIES[0]=-d 
DEPENDENCIES[1]="apt-transport-https > 0.8.16~exp12ubuntu10.15" 
DEPENDENCIES[2]=-d 
DEPENDENCIES[3]="mongodb > 1:2.0.4-1ubuntu2" 
DEPENDENCIES[4]=-d 
DEPENDENCIES[5]="ntp > 1:4.2.6.p3+dfsg-1ubuntu3.1" 

在你的脚本,调用FPM这样的:

fpm ...blah blah details... "${DEPENDENCIES[@]}" path 
+0

感谢花花公子。 +1链接阅读。我可以解决大部分问题,但这是我无法理解的。为了保持安静,'把4>/dev/null'换了。 –

相关问题