相关疑难解决方法(0)

Bash在执行前将引号插入字符串

我设法在我正在处理的init脚本中跟踪完成了一个奇怪的问题.我在以下示例中简化了问题:

> set -x                           # <--- Make Bash show the commands it runs
> cmd="echo \"hello this is a test\""
+ cmd='echo "hello this is a test"'
> $cmd
+ echo '"hello' this is a 'test"'  # <--- Where have the single quotes come from?
"hello this is a test"
Run Code Online (Sandbox Code Playgroud)

为什么bash将这些额外的单引号插入到执行的命令中?

额外的引号在上面的例子中没有引起任何问题,但它们真的让我头疼.

对于好奇,实际的问题代码是:

cmd="start-stop-daemon --start $DAEMON_OPTS \
    --quiet \
    --oknodo \
    --background \
    --make-pidfile \
    $* \
    --pidfile $CELERYD_PID_FILE
    --exec /bin/su -- -c \"$CELERYD $CELERYD_OPTS\" - $CELERYD_USER"
Run Code Online (Sandbox Code Playgroud)

产生这个:

start-stop-daemon --start …
Run Code Online (Sandbox Code Playgroud)

linux bash shell

18
推荐指数
2
解决办法
1万
查看次数

使用bash变量将多个标头传递给curl命令

我想curl用多个标题发出请求.解决方案是创建此命令:

curl -H "keyheader: value" -H "2ndkeyheader: 2ndvalue" ...
Run Code Online (Sandbox Code Playgroud)

我的目标是只使用一个变量和所有标题,如:

headers='-H "keyheader: value" -H "2ndkeyheader: 2ndvalue" '
curl $headers
Run Code Online (Sandbox Code Playgroud)

发送

curl -H "keyheader: value" -H "2ndkeyheader: 2ndvalue"
Run Code Online (Sandbox Code Playgroud)

目前,问题是:我可以使用'"声明我的字符串,但bash尝试运行之后"-H"作为参数然后回答:

command unknown
Run Code Online (Sandbox Code Playgroud)

想知道这里出了什么问题.

bash curl

6
推荐指数
1
解决办法
9586
查看次数

在-exec arg上找到命令fusses

我正在尝试find从脚本构建和运行命令.但是我收到了一个非常神秘的错误信息find.以下基本总结了我如何构建命令行并运行它

$ xx="find . -name 'p*' -mmin +10 -exec echo {} \\;"
$ echo "$xx" #.....and I get the same print from echo $xx
find . -name 'p*' -mmin +10 -exec echo {} \;
$ $xx
find: missing argument to `-exec'
$ find . -name 'p*' -mmin +10 -exec echo {} \;
./p2.sh
./p1.sh
$ read xx
find . -name 'p*' -mmin +2 -exec echo {} \\;
$ $xx
find: missing argument to `-exec'
Run Code Online (Sandbox Code Playgroud)

我被困住了,非常感谢你的帮助.我也想知道造成这种情况的原因.我在SLES上使用bash 3.2.51. …

bash find

0
推荐指数
1
解决办法
69
查看次数

标签 统计

bash ×3

curl ×1

find ×1

linux ×1

shell ×1