比方说,你有一个alias像bash 一样:
alias rxvt='urxvt'
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.
然而:
alias rxvt='urxvt -fg '#111111' -bg '#111111''
Run Code Online (Sandbox Code Playgroud)
不会起作用,也不会:
alias rxvt='urxvt -fg \'#111111\' -bg \'#111111\''
Run Code Online (Sandbox Code Playgroud)
那么,一旦转义了引号,你最终如何在字符串中匹配开头和结尾的引号?
alias rxvt='urxvt -fg'\''#111111'\'' -bg '\''#111111'\''
Run Code Online (Sandbox Code Playgroud)
看起来很笨拙虽然如果你允许这样连接它们就会代表相同的字符串.
如何快速报价/引文结束词和引述的变化(例如从'到")在Vim中?我知道surround.vim插件,但我想只使用Vim.
以下是一系列echo $var可以显示与刚刚分配的值不同的值的情况.无论指定的值是"双引号","单引号"还是不引用,都会发生这种情况.
如何让shell正确设置我的变量?
星号
预期的输出是/* Foobar is free software */,但我得到一个文件名列表:
$ var="/* Foobar is free software */"
$ echo $var
/bin /boot /dev /etc /home /initrd.img /lib /lib64 /media /mnt /opt /proc ...
Run Code Online (Sandbox Code Playgroud)
方括号
期望值是[a-z],但有时我会得到一个字母!
$ var=[a-z]
$ echo $var
c
Run Code Online (Sandbox Code Playgroud)
换行(换行符)
预期值是一个单独的行列表,但所有值都在一行!
$ cat file
foo
bar
baz
$ var=$(cat file)
$ echo $var
foo bar baz
Run Code Online (Sandbox Code Playgroud)
多个空间
我期望一个精心对齐的表头,但是多个空格要么消失要么折叠成一个!
$ var=" title | count"
$ echo $var
title | count
Run Code Online (Sandbox Code Playgroud)
标签
我期望两个制表符分隔值,但我得到两个空格分隔值!
$ …Run Code Online (Sandbox Code Playgroud) 要么我错过了一些强烈反对或反对,似乎没有太多的程序员报价循环.
$ echo "hello1-`echo hello2-\`echo hello3-\`echo hello4\`\``"
hello1-hello2-hello3-echo hello4
Run Code Online (Sandbox Code Playgroud)
通缉
hello1-hello2-hello3-hello4-hello5-hello6-...
Run Code Online (Sandbox Code Playgroud) 是否有本机函数或实体类/库,用于将数组作为一行写入没有机箱的CSV文件中?如果机箱参数没有传入任何内容,则fputcsv默认为".谷歌让我失望(返回大量网页的结果fputcsv),而PEAR的图书馆或多或少地做了相同的事情fputcsv.
一些完全相同的东西fputcsv,但会让字段保持不带引号.
目前: "field 1","field 2",field3hasNoSpaces
期望: field 1,field 2,field3hasNoSpaces
像Haskell(或Nemerle)这样的语言有quasiquotations.我想知道"准"是什么意思,如果没有"准"部分也存在"引用".
haskell programming-languages metaprogramming quoting nemerle
我需要将这些bash变量读入我的JSON字符串,我不熟悉bash.任何帮助表示赞赏.
#!/bin/sh
BUCKET_NAME=testbucket
OBJECT_NAME=testworkflow-2.0.1.jar
TARGET_LOCATION=/opt/test/testworkflow-2.0.1.jar
JSON_STRING='{"bucketname":"$BUCKET_NAME"","objectname":"$OBJECT_NAME","targetlocation":"$TARGET_LOCATION"}'
echo $JSON_STRING
Run Code Online (Sandbox Code Playgroud) 这与宣传的一样:
# example 1
#!/bin/bash
grep -ir 'hello world' .
Run Code Online (Sandbox Code Playgroud)
这不是:
# example 2
#!/bin/bash
argumentString="-ir 'hello world'"
grep $argumentString .
Run Code Online (Sandbox Code Playgroud)
尽管'hello world'在第二个例子中被引号括起来,但grep解释'hello为一个参数和world'另一个参数,这意味着,在这种情况下,'hello将是搜索模式world'并将成为搜索路径.
同样,这仅在从argumentString变量扩展参数时发生.grep 'hello world'在第一个示例中正确解释为单个参数.
谁能解释为什么会这样?有没有一种正确的方法来扩展一个字符串变量,它将保留每个字符的语法,以便shell命令正确解释它?
Python标准库中是否有任何内容可以正确解析/解析字符串以便在shell命令中使用?我正在寻找perl的python模拟String::ShellQuote::shell_quote:
$ print String::ShellQuote::shell_quote("hello", "stack", "overflow's", "quite", "cool")
hello stack 'overflow'\''s' quite cool
Run Code Online (Sandbox Code Playgroud)
而且,更重要的是,它会在相反的方向上起作用(取一个字符串并将其分解为一个列表).
对于命令:/ usr/bin/sh -c"ls 1`"(1之后的反引号).
如何让它成功运行?在"`"之前添加反斜杠不起作用.`是我们所知道的一个特殊字符,我也尝试使用单引号将其包围起来(/ usr/bin/sh -c"ls 1'`'"),但这也不起作用.
错误始终是:
% /usr/bin/sh -c "ls 1\`"
Unmatched `
Run Code Online (Sandbox Code Playgroud)