附加bash参数并传递给其他脚本

时间:2017-02-11 11:10:30

标签: bash apache shell

我需要传递更多原始参数,我还想添加其他参数。像这样:

#!/bin/bash
params="-D FOREGROUND"
params+=" -c Include conf/dev.conf"

/usr/local/apache/bin/apachectl $params "$@"

如果params包含两个或多个参数,则上述代码无法正常工作,将其视为一个参数。

2 个答案:

答案 0 :(得分:4)

如果以下命令在命令行执行时有效,则示例中的代码应该有效:

/usr/local/apache/bin/apachectl -D FOREGROUND -c Include conf/dev.conf "$@"

快速网络搜索让我认为你想要的是这个(注意额外的双引号):

/usr/local/apache/bin/apachectl -D FOREGROUND -c "Include conf/dev.conf" "$@"

以下是如何使用数组简单可靠地实现这一目标,以避免引用内部引号"的问题:

#!/bin/bash
declare -a params=()
params+=(-D FOREGROUND)
params+=(-c "Include conf/dev.conf")

/usr/local/apache/bin/apachectl "${params[@]}" "$@"

params数组包含4个字符串("-D""FOREGROUND""-c""Include conf/dev/conf")。数组扩展("${params[@]}",请注意双引号在这里很重要)将它们扩展为这4个字符串,就像你用它们用双引号写的那样(即没有进一步的单词拆分)。

使用具有此类扩展的数组是一种灵活且可靠的方法来构建命令,然后通过简单的扩展来执行它们。

答案 1 :(得分:0)

如果问题是参数“-c Include conf / dev.conf”中的空格,那么您可以使用退格键来保留空格字符: params + =“ - c Include \ conf / dev.conf”