我正在使用FPM创建Debian软件包,我遇到了一个小问题。 我的bash脚本需要5个参数。
TARGET=$1
VERSION=$2
DESCRIPTION=$3
DEPENDENCIES=$4
REVISION=$5
麻烦的是4美元,我把它传给下面的字符串
-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"
双引号在我的字符串中转义,因此当我echo $DEPENDENCIES
时,引号会正确显示。
FPM使用-d
标志可以多次使用,我需要能够将脚本中的参数列表传递给fpm。
我想做点什么:
fpm ...blah blah details... $DEPENDENCIES path
$ DEPENDENCIES应该将多个标志传递给fpm,但它似乎只能识别第一个。如果我手动编写参数,它工作正常,但尝试使用字符串传递参数不起作用。
我不确定是什么。帮助
答案 0 :(得分:8)
这将有助于阅读:http://mywiki.wooledge.org/BashFAQ/050
如果我是你,我会重新安排你的参数
#!/bin/bash
TARGET=$1
VERSION=$2
DESCRIPTION=$3
REVISION=$4
shift 4
DEPENDENCIES=( "$@" )
依赖关系是“所有其余”的参数,正确分开。您将像这样调用您的脚本
./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数组将包含这些元素
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