【发布时间】:2014-03-28 17:26:44
【问题描述】:
我在使用 bash 执行某些命令时遇到问题。假设我有一个简单的 bash 脚本:
#!/bin/bash
cmd="sh -c \"ls\""
$cmd
这一切正常。但是,如果我将命令的参数更改为包含空格:
#!/bin/bash
cmd="sh -c \"ls -a\""
$cmd
然后它会抛出-a": 1: -a": Syntax error: Unterminated quoted string 错误。似乎 bash 正确地注意到了开引号,但它停止在第一个空格上寻找右引号。如果我将$cmd 更改为echo $cmd,它将按预期返回sh -c "ls -a"。如果我在终端中执行此命令,一切正常,但 $(./mysh.sh) 失败并出现同样的错误。
我尝试使用\ 转义空格,或使用\\\" 进行“双转义”引号(愚蠢的想法,但值得一试)。谁能解释这里发生了什么?
【问题讨论】:
标签: bash