我想从一个bash脚本运行一个命令,该脚本有单引号和单引号内的一些其他命令和一个变量。
例如repo forall-c'...$variable'
repo forall -c '...."$variable" '
repo forall -c " '....$variable' "
" repo forall -c '....$variable' "
repo forall -c "'" ....$variable "'"
在单引号内,所有的东西都保留在字面上,没有例外。
这意味着您必须关闭引号,插入某些内容,然后再次重新输入。
'before'"$variable"'after'
'before'"'"'after'
'before'\''after'
单词连接只是通过并列来完成的。正如您可以验证的那样,上面的每一行对shell来说都是一个单词。引号(单引号或双引号,视情况而定)不孤立单词。它们仅用于禁用各种特殊字符的解释,如空白、$
、;
······关于引用的好教程,请参见马克·里德的答案。同样相关:Bash中哪些字符需要转义?
script="echo \"Argument 1 is: $myvar\""
/bin/sh -c "$script"
myvar='foo"; echo "you were hacked'
script='echo "arg 1 is: $1"'
/bin/sh -c "$script" -- "$myvar"
请注意在对脚本
的赋值中使用了单个刻度,这意味着它是按字面意思进行的,没有变量展开或任何其他形式的解释。
问题内容: 我现在想在“摘要”中添加一个变量$ {date}: 但是变量不会在bash中的单引号内扩展。 有可能这样做吗? 注意:GoogleCL是用python编写的命令行程序。我在使用Python 2.6的Ubuntu 10.10上。 问题答案: 我将在列表中添加另一个选项:将变量定义为换行符,然后在双引号中使用该变量。
问题内容: 我有此命令可以执行我想要的操作,但无法在我的.bashrc中使用别名(请注意,它同时使用单引号和双引号): 我试过了: 还有一些其他没有运气的常识组合。.我知道bash带有引号是非常挑剔的。.因此,为它加上别名的正确方法是什么?为什么?谢谢 问题答案: 您只需要正确地转义即可。
问题内容: 我正在寻找仅使用bash /标准Linux命令即可将字符串转换为以下内容的东西: Single-quotes surrounding a string should be removed Double-quotes surrounding a string should be removed Unquoted strings should remain the same Strings
问题内容: 像这样将变量(例如)连接到现有字符串(例如)中是否更好: 或将变量嵌入到字符串中,如下所示: 还是使用像这样的函数更好: 就处理器时间/效率而言,哪个更好? 问题答案: 进行测试的每个人都得出结论,使用单引号在性能上略有提高。最后,单引号仅导致串联,而双引号则迫使解释器解析变量的完整字符串。 但是,这样做对于最终版本的PHP来说增加的负担很小,以致在大多数情况下,结论是这并不重要。 因
问题内容: 我正在编写一个Shell脚本,在其中设置几个变量,其值是命令的输出。 我得到的错误是: 现在,我确实阅读了其他类似的问题,并在此基础上尝试了多种方法: 将命令分为两个调用 尝试使用反引号 尝试使用 但是在每种情况下,命令输出都会执行。如何使其停止执行命令输出并仅将其存储为变量?我需要这个来处理ZSH和BASH。 问题答案: 您可以使用或定义变量。 因此,您必须删除前导符号和周围的任何其
问题内容: 我必须找到具有选定权限的文件,并列出它们及其编号。因此,我想将命令的结果传递给shell和下一个命令,该输出我想存储在变量中,以便以后可以很好地显示。我想吃点东西 但部分无效。请帮忙。 编辑 我知道我可以将命令的整个输出放到像这样的变量中 但是然后我只需要的结果。我如何从该变量中获得该数字?是否可以按相反的顺序显示它,先显示编号,然后显示列表? 问题答案: 复制到TTY(不是标准输出!
问题内容: 假设是一个仅打印出参数的程序; 如何正确传递变量中带引号的参数?我正在尝试这样做; 但是,当我通过一个变量时,引号似乎被忽略了,所以我得到了; bash是否有可能像对待我自己一样在第一个代码块中输入引号? 问题答案: 我不知道你从哪里来的,但看来它坏了。这是用bash编写的正确方法: 这会将每个参数打印在单独的行中,以使它们更易于区分(当然,包含换行符的参数会出现问题,但我们不会传递此
问题内容: 我想像这样在Bash中显示一个字符串 当然可以这样 但是如何在字符串周围使用单引号的同时完成此操作? 问题答案: 不起作用。但是以下工作原理: 在bash的手册页中: 即使在单引号之前加反斜杠,也不能在单引号之间引起单引号。 .... $’string’* 形式的单词经过特殊处理。该单词扩展为字符串,并按ANSI C标准的规定替换反斜杠转义字符。 *