我需要传递更多原始参数,我还想添加其他参数。像这样:
#!/bin/bash
params="-D FOREGROUND"
params+=" -c Include conf/dev.conf"
/usr/local/apache/bin/apachectl $params "$@"
如果params
包含两个或多个参数,则上述代码无法正常工作,将其视为一个参数。
答案 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”