gpt4 book ai didi

linux - Bash 引号禁止转义

转载 作者:IT王子 更新时间:2023-10-29 01:00:35 24 4
gpt4 key购买 nike

我想运行一些命令,让我们从我的 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'

关于linux - Bash 引号禁止转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30729344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com