Bash 引号禁用转义
Bash quotes disable escaping
我想要 运行 一些命令,让我们从我的 bash 脚本中将其命名为 "test" 并把一些来自 bash 变量的参数放在那里。
我的脚本:
#!/bin/bash -x
PARAMS="-A 'Foo' -B 'Bar'"
./test $PARAMS
我有:
+ PARAMS='-A '\''Foo'\'' -B '\''Bar'\'''
+ ./test -A ''\''Foo'\''' -B ''\''Bar'\'''
错了!
另一种情况:
#!/bin/bash -x
PARAMS='-A '"'"'Foo'"'"' -B '"'"'Bar'"'"
./test $PARAMS
结果也很伤心:
+ PARAMS='-A '\''Foo'\'' -B '\''Bar'\'''
+ ./test -A ''\''Foo'\''' -B ''\''Bar'\'''
所以,问题是 – 如何使用 bash 变量作为某些命令的命令行参数。
变量类似于“-A 'Foo' -B 'Bar'”(完全是单引号)
结果必须是使用参数“-A 'Foo' -B 'Bar'”调用程序“./test”,如下所示:
./test -A 'Foo' -B 'Bar'
谢谢!
使用 BASH 数组存储完整或部分命令行更安全,如下所示:
params=(-A 'Foo' -B 'Bar')
然后将其命名为:
./test "${params[@]}"
这将与:
./test -A 'Foo' -B 'Bar'
我想要 运行 一些命令,让我们从我的 bash 脚本中将其命名为 "test" 并把一些来自 bash 变量的参数放在那里。
我的脚本:
#!/bin/bash -x
PARAMS="-A 'Foo' -B 'Bar'"
./test $PARAMS
我有:
+ PARAMS='-A '\''Foo'\'' -B '\''Bar'\'''
+ ./test -A ''\''Foo'\''' -B ''\''Bar'\'''
错了!
另一种情况:
#!/bin/bash -x
PARAMS='-A '"'"'Foo'"'"' -B '"'"'Bar'"'"
./test $PARAMS
结果也很伤心:
+ PARAMS='-A '\''Foo'\'' -B '\''Bar'\'''
+ ./test -A ''\''Foo'\''' -B ''\''Bar'\'''
所以,问题是 – 如何使用 bash 变量作为某些命令的命令行参数。 变量类似于“-A 'Foo' -B 'Bar'”(完全是单引号) 结果必须是使用参数“-A 'Foo' -B 'Bar'”调用程序“./test”,如下所示:
./test -A 'Foo' -B 'Bar'
谢谢!
使用 BASH 数组存储完整或部分命令行更安全,如下所示:
params=(-A 'Foo' -B 'Bar')
然后将其命名为:
./test "${params[@]}"
这将与:
./test -A 'Foo' -B 'Bar'