我正在使用FPM来创建Debian软件包,我遇到了一个小问题.我的bash脚本需要5个参数.
TARGET=$1
VERSION=$2
DESCRIPTION=$3
DEPENDENCIES=$4
REVISION=$5
Run Code Online (Sandbox Code Playgroud)
麻烦的是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
Run Code Online (Sandbox Code Playgroud)
$ DEPENDENCIES应该将多个标志传递给fpm,但它似乎只能识别第一个.如果我手动编写参数,它工作正常,但尝试使用字符串传递参数不起作用.
我不确定是什么.救命?
这将有助于阅读:http://mywiki.wooledge.org/BashFAQ/050
如果我是你,我会重新排列你的参数
#!/bin/bash
TARGET=$1
VERSION=$2
DESCRIPTION=$3
REVISION=$4
shift 4
DEPENDENCIES=( "$@" )
Run Code Online (Sandbox Code Playgroud)
依赖关系是"所有其余的"参数,正确分开.你会像这样调用你的脚本
./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"
Run Code Online (Sandbox Code Playgroud)
在您的脚本中,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"
Run Code Online (Sandbox Code Playgroud)
在你的脚本中,调用fpm如:
fpm ...blah blah details... "${DEPENDENCIES[@]}" path
Run Code Online (Sandbox Code Playgroud)