Questions tagged «quoting»

字符串通常用引号分隔,这引起了处理包含引号的字符串的问题。

2
除Bash和Zsh之外的其他外壳程序是否支持ANSI-C引用?例如$'string'
我有一个shell脚本,该脚本使用以下命令在其输出中打印一个绿色的选中标记: col_green="\e[32;01m" col_reset="\e[39;49;00m" echo -e "Done ${col_green}✓${col_reset}" 在阅读了有关Bash的ANSI-C引用之后,我意识到我可以在设置颜色变量并-e从echo中删除标志时使用它。 col_green=$'\e[32;01m' col_reset=$'\e[39;49;00m' echo "Done ${col_green}✓${col_reset}" 这似乎很吸引人,因为它意味着无论将消息传递给Bash的内置echo还是外部util /bin/echo(我在macOS上),消息都能正确打印。 但这是否会使脚本的可移植性降低?我知道Bash和Zsh支持这种引用风格,但是我不确定其他人。

1
rsync从目录中排除空格
我正在尝试排除rsync的“ Mendeley Desktop”目录。 exclude-from =如下: Downloads *.o *.iso Dropbox Documents/Mendeley\ Desktop 但是rsync仍在备份Mendeley Desktop。 如何使rsync忽略带空格的目录?
13 rsync  quoting 

2
Bash字符串串联用于构建参数列表
鉴于这一点: PARMS='-rvu' PARMS+=" --delete --exclude='.git'" echo $PARMS rsync ${PARMS} . ${TARGET} 回显按预期显示PARMS字符串,不显示任何错误,但rsync默默地充当+ =添加的选项。但是,这按预期工作: PARMS='-rvu' rsync ${PARMS} --delete --exclude='.git' . ${TARGET} 我想我用bash引号搞砸了(这些引号总是有问题),但是即使字符串似乎已经正确构建,也不能完全确定忽略了什么以及为什么忽略了这些选项。


2
在命令行上转义正则表达式反斜杠所需的反斜杠数
我最近在命令行上遇到一些正则表达式时遇到麻烦,发现为了匹配反斜杠,可以使用不同数量的字符。此数字取决于用于正则表达式的引号(无,单引号,双引号)。请参阅以下bash会话了解我的意思: echo "#ab\\cd" > file grep -E ab\cd file grep -E ab\\cd file grep -E ab\\\cd file grep -E ab\\\\cd file #ab\cd grep -E ab\\\\\cd file #ab\cd grep -E ab\\\\\\cd file #ab\cd grep -E ab\\\\\\\cd file #ab\cd grep -E ab\\\\\\\\cd file grep -E "ab\cd" file grep -E "ab\\cd" file grep …


3
通过SSH进行远程循环
我在脚本中有以下内容 for server in ${servers[@]}; do echo ${server} ssh user@${server} "for i in /tmp/foo* ; do echo ${i}; done" done 但这是行不通的。奇怪的是,我看到$ I的返回行数量。因此,如果我有十个文件,我会看到十个空行。
12 bash  ssh  quoting 

2
在zsh别名中转义引号
关于这个关于从文本中去除换行符的问题之后,我想将其转换为zsh别名,如下所示: alias striplines=' awk " /^$/ {print \"\n\"; } /./ {printf( \" %s \",$0);}"' 我尝试将awk脚本中的引号转义,但出现此错误: awk: (FILENAME=bspsrobustness FNR=1) fatal: division by zero attempted (该文件称为bspsrobustness) 有什么方法可以做我想要的吗?我想我可以将其转换为awk脚本而不是zsh别名,这是我的最佳选择吗?
12 shell  zsh  quoting  alias 

2
在不扩展/求值的情况下回显其中包含变量的字符串
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 4年前关闭。 我到处搜寻。尝试回显和打印。尝试使用单引号和双引号。但是我已经解析了数据并将其分配给一个变量,然后想对其进行评估以了解其中是否包含变量。然后,我将使用通配符替换变量并搜索文件。 例: var="file.$DATE.txt" ### Where it goes wrong- Needs to identify that $DATE is within the $var varaible. test=$(echo "$var"|grep '\$') if [[ $test ]] then ### I would use whatever fix is discovered here as well test=$(echo $test|sed 's/\$[a-zA-Z]*/\*/') fi ### (Actually pulling from remote machine …
12 bash  shell  quoting 

2
如何扩展波浪符号〜作为变量的一部分?
当我打开bash提示并键入: $ set -o xtrace $ x='~/someDirectory' + x='~/someDirectory' $ echo $x + echo '~/someDirectory' ~/someDirectory 我希望上面的第五条线会过去+ echo /home/myUsername/someDirectory。有没有办法做到这一点?在我最初的Bash脚本中,实际上是通过如下循环从输入文件中的数据填充变量x: while IFS= read line do params=($line) echo ${params[0]} done <"./someInputFile.txt" 不过,我得到了类似的结果,echo '~/someDirectory'而不是echo /home/myUsername/someDirectory。


3
ssh远程命令行参数如何解析
我已经看到了有关需要对远程ssh命令的参数进行两次转义的问题和解答。我的问题是:第二次解析究竟在何时何地完成? 如果我运行以下命令: $ ssh otherhost pstree -a -p 我在输出中看到以下内容: |-sshd,3736 | `-sshd,1102 | `-sshd,1109 | `-pstree,1112 -a -p 远程命令(pstree)的父进程是sshd,似乎没有任何shell可以解析远程命令的命令行参数,因此似乎没有必要使用双引号或转义(但绝对是)。相反,如果我先在那儿ssh并获得一个登录shell,然后运行,pstree -a -p我会在输出中看到以下内容: ├─sshd,3736 │ └─sshd,3733 │ └─sshd,3735 │ └─bash,3737 │ └─pstree,4130 -a -p 很明显,bash在这种情况下,有一个外壳可以进行命令行解析。但是,在我直接使用远程命令的情况下,似乎没有外壳,那么为什么需要双引号?
11 bash  shell  ssh  process  quoting 

2
如何在单引号内使用变量
我有一个应用程序,它以嵌入在单引号中的双引号作为输入属性。以这个正确的命令为例: command -p 'cluster="cl1"' 为了使其自动化,我创建了一个bash文件$CLUSTER作为变量。我的命令应该如何?换句话说,我应该代替cl1放置什么? 请注意,如果我修改了上面的命令,它将不会被接受。例如:command -p "cluster=cl1"不被接受


2
脚本出现问题,文件名中带有空格
我有一个脚本,该脚本将来自远程主机的文件压缩回本地。有时文件名包含空格。scp不喜欢其文件名中的空格。由于某种原因,我尝试处理空间的结果未产生正确的scp路径。 码: PATH=/var/root/Documents/MyFile OG-v1.2.3.pkg scp $PATH Me@10.1.10.33:/Users/Me/Desktop 结果是 Cannot find directory: var/root/Documents/MyFile Cannot find directory: OG-v1.2.3.pkg 将PATH括在引号中"$PATH"会产生相同的错误。 将空间交换为逃逸空间也不起作用,尽管据我所知应该这样: ESC_PATH=${PATH/' '/'\ '} 尽管打印转义的路径表明编辑有效: echo $ESC_PATH > /var/root/Documents/MyFile\ OG-v1.2.3.pkg

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.