我有一个小的Bash脚本,它运行一个命令,该命令基本上是一个包含环境变量的长字符串,以文件的路径结尾。
function ios-run-test() {
thing="DEVICE_TARGET=abcde12345
DEVICE_ENDPOINT=http://192.168.1.1:37265
BUNDLE_ID='com.app.iPhoneEnterprise'
DISABLE_ADS=1
env=$1
DISABLE_LOGIN_INTERSTITIALS=1
bundle exec cucumber --tags ~@wip --tags ~@ignore --tags ~@android
~/Automation/ios-automation/features/$2.feature"
if [[ $3 ]]; then
add_this=$3
thing="${thing:$add_this}"
fi
echo ${thing}
eval universal-variables
eval ${thing}
}
有时,该命令可能会以:some_integer
结尾,例如DEVICE_TARGET=abcde12345 DEVICE_ENDPOINT=http://192.168.1.1:37265 BUNDLE_ID='com.app.iPhoneEnterprise' DISABLE_ADS=1 env=production DISABLE_LOGIN_INTERSTITIALS=1 bundle exec cucumber --tags ~@wip --tags ~@ignore --tags ~@android ~/Automation/ios-automation/features/login.feature:5
。这就是我的问题所在。我发现Substring Extraction非常简洁,但导致if语句失败:
if [[ $3 ]]; then
add_this=$3
thing="${thing:$add_this}"
fi
不是将$thing
附加到":$3"
,而是删除$thing
的前3个字符。是否有其他方法可以获取可选的位置参数并将其附加到命令中?
答案 0 :(得分:2)
如果您只想附加:$3
,请更改此行:
thing="${thing:$add_this}"
对此:
thing="${thing}:$add_this"
在Bash中附加值只需一个接一个地写入它们即可。
在这个例子中,大括号是可选的,
所以简单地thing="$thing:$add_this"
是等价的。
在${...}
内,您可以根据变量执行各种高级操作,
但这些都不是您的用例所必需或相关的。