如何让bash在输出中插入'

时间:2010-04-08 08:25:30

标签: bash scripting

我对bash很陌生,不知何故只是在这里找不到我做错了什么: (这是一个调用我的生成器的小bash脚本)

    if [ -n $folder ]; then
        $zorbalocation -q $generator -f -e files=\"$lFiles\" -e folder=\"lFolder\"
    else
        $zorbalocation -q $generator -f -e files=\"$lFiles\" -e folder=\".\"
    fi

现在,显然我希望bash执行这些命令,具体取决于文件夹的内容。 但是,出于某种原因,bash坚持在文件= ...和文件夹= ...周围放置撇号(') 所以,它试图执行

../../../zorba/build/bin/zorba -q generator.xq -f -e 'files="test.xqlib"' -e 'folder="."'

而不是

../../../zorba/build/bin/zorba -q generator.xq -f -e files="test.xqlib" -e folder="."

有人知道为什么bash坚持在那里插入撇号吗?

美好的一天

丹尼

4 个答案:

答案 0 :(得分:1)

Bash不会向执行的命令添加'。您只能在使用bash -xset -x运行脚本时看到引号;然后bash尝试打印出它运行的命令,并且有用,如果你想将它们粘贴回bash,它会引用需要引用的标记,因此a="b"变为'a="b"'。您的问题必须是其他问题。

答案 1 :(得分:0)

只要他们不需要进一步解释(例如变量扩展),在参数或命令名称周围加上单引号应该不是bash的问题。

答案 2 :(得分:0)

echo放入您的陈述中,看看它们是否符合您的预期。另外,尽量不要逃避那些双引号。

if [ -n $folder ]; then
    echo $zorbalocation -q $generator -f -e files="$lFiles" -e folder="lFolder"
else
    echo $zorbalocation -q $generator -f -e files="$lFiles" -e folder="."
fi

否则,在执行此部分之前显示其余代码

答案 3 :(得分:0)

现在一切都清除了,似乎通过使用eval命令一切正常。 感谢所有人的帮助。