标签: quoting

哪种形式更适合在Bash中使用?

我正在学习Bash,我看到了这个形式

C =示例

回声"$ C"

给出相同的表格结果

C = "示例"

echo $ C.

我想知道是否更好地将""放在变量的赋值中或者在$之后.或者如果它无动于衷.或者如果一个人认为比另一个人"更美丽".

bash quoting

3
推荐指数
1
解决办法
337
查看次数

在bash变量中使用--filter的rsync命令

这类似于我在stackoverflow上看到的一些其他rsync bash变量问题,但这些答案都没有解决我的具体问题.我想在bash脚本中运行以下命令,但是变量中包含rsync选项:

rsync -ahz --delete --filter=': .rsync-filter' source/ destination/
Run Code Online (Sandbox Code Playgroud)

我注意到bash实际上解释如下:

+ rsync -ahz --delete '--filter=: .rsync-filter' source/ destination/
Run Code Online (Sandbox Code Playgroud)

哪个在rsync中也可以正常工作.

当我尝试将这些值放在变量中时,我看到正在运行以下命令:

RSYNCOPTS="-ahz --delete --filter=: .rsync-filter"
rsync  ${RSYNCOPTS} source/ destination/
+ RSYNCOPTS='-ahz --delete --filter=: .rsync-filter'
+ rsync -ahz --delete --filter=: .rsync-filter source/ destination/
unexpected end of filter rule: :

RSYNCOPTS="-ahz --delete --filter=': .rsync-filter'"
rsync  ${RSYNCOPTS} source/ destination/
+ RSYNCOPTS='-ahz --delete --filter='\'': .rsync-filter'\'''
+ rsync -ahz --delete '--filter='\'':' '.rsync-filter'\''' source/ destination/
Unknown filter rule: `':'

RSYNCOPTS="-ahz --delete '--filter=: .rsync-filter'"
rsync  ${RSYNCOPTS} source/ destination/ …
Run Code Online (Sandbox Code Playgroud)

variables bash rsync quoting

3
推荐指数
1
解决办法
2277
查看次数

运行通过ssh嵌套引号的shell命令

我有以下shell命令:

ssh user@host "df | grep /dev/ | \
awk 'BEGIN{print "DISK", "%USAGE", "STATUS"} {split($5, a, "%"); \
var="GREEN"; print $1, $5, var}' | column -t"
Run Code Online (Sandbox Code Playgroud)

我需要在ssh上运行它,但由于嵌套的双引号和单引号的存在,我得到语法错误.

我在引号的开头和结尾之前尝试了转义符,但它没有解决问题.

但是,在运行本地系统时,将提供以下输出:

$ df | grep /dev/ | \
awk 'BEGIN{print "DISK", "%USAGE", "STATUS"} {split($5, a, "%"); \
var="GREEN"; print $1, $5, var}' | column -t
DISK       %USAGE  STATUS
/dev/sda1  95%     GREEN
Run Code Online (Sandbox Code Playgroud)

bash shell quoting

3
推荐指数
1
解决办法
1514
查看次数

如何将带有空格的路径存储到bash中的变量中

我想存储/c/users/me/dir name到一个变量中以将其传递给cd系统调用。

键入时有效:

$ cd '/c/users/me/dir name'

或者

$ cd /c/users/me/dir\ name

但如果我存储它则不起作用:

$ dirname="'/c/users/me/dir name'"
$ cd $dirname
$ bash: cd: /c/users/me/dir: No such file or directory
Run Code Online (Sandbox Code Playgroud)

相同的结果:

$ dirname=('/c/users/me/dir name')
Run Code Online (Sandbox Code Playgroud)

或者

$ dirname=(/c/users/me/dir\ name)
Run Code Online (Sandbox Code Playgroud)

哪种存储方式才是正确的?

bash quoting

3
推荐指数
1
解决办法
4737
查看次数

Grep 正则表达式不适用于方括号

所以我试图在 grep 中编写一个正则表达式来匹配方括号,即[ad]应该匹配[]。但是我在使用捕获组和字符类时得到了不同的结果。放在'正则表达式字符串的开头和结尾的结果也不同。

所以这些是我得到的不同结果。

使用捕获组工作正常

echo "[ad]" | grep -E '(\[|\])'
[ad]
Run Code Online (Sandbox Code Playgroud)

使用捕获组而不'给出语法错误

echo "[ad]" | grep -E (\[|\])
bash: syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)

使用字符类[后跟]不提供任何输出

echo "[ad]" | grep -E [\[\]]
Run Code Online (Sandbox Code Playgroud)

使用字符类]后跟[正常工作

echo "[ad]" | grep -E [\]\[]
[ad]
Run Code Online (Sandbox Code Playgroud)

使用带有]后跟[和使用的字符类'不起作用

echo "[ad]" | grep -E '[\]\[]'
Run Code Online (Sandbox Code Playgroud)

如果有人能解释它们之间的区别,那就太好了。

regex bash grep quoting

3
推荐指数
1
解决办法
4770
查看次数

`/bin/bash -c` 中的导出变量

我正在尝试在/bin/bash -c命令中导出变量。

这导致空输出:

/bin/bash -c "export FOO=foo; echo $FOO"
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

bash export quoting

3
推荐指数
1
解决办法
1041
查看次数

如何防止lisp宏中的表单评估?

我正在尝试创建一个简单的备忘录.如何防止在此代码中评估args表单?

(defmacro defun/memo (name args &rest body)
  `(let ((memo (make-hash-table :test 'equalp)))
     (defun ,name ,args
       (if (gethash (loop for x in ,args collect x) memo)
           (gethash (loop for x in ,args collect x) memo)
           (let ((result (progn ,@body)))
             (setf (gethash (loop for x in ,args collect x) memo) result)
             result)))))
Run Code Online (Sandbox Code Playgroud)

错误:

; in: DEFUN ADD
;     (X Y)
; 
; caught STYLE-WARNING:
;   undefined function: X
; 
; compilation unit finished
;   Undefined function:
;     X
Run Code Online (Sandbox Code Playgroud)

lisp macros evaluation common-lisp quoting

3
推荐指数
1
解决办法
153
查看次数

Pandas 导出 to_csv() 在列名周围加上引号

出于某种原因,我需要以这种格式输出到 csv 并在每列名称周围加上引号,我想要的输出如下所示:

"date" "ret"
2018-09-24 0.00013123989025119056
Run Code Online (Sandbox Code Playgroud)

我正在尝试

import csv
import pandas as pd

Y_pred.index.name = "\"date\""
Y_pred.name = "\'ret\'"
Y_pred = Y_pred.to_frame()
path = "prediction/Q1/"
try:
    os.makedirs(path)
except:
    pass

Y_pred.to_csv(path+instrument_tmp+"_ret.txt",sep=' ')   
Run Code Online (Sandbox Code Playgroud)

并得到如下输出:

"""date""" 'ret'
2018-09-24 0.00013123989025119056
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到一种使用引号将列换行的方法。有谁知道怎么做?谢谢。

我的解决方案: 使用 quoting=csv.QUOTE_NONE 和 Y_pred.index.name = "\"date\"", Y_pred.name = "\"ret\""

Y_pred.index.name = "\"date\""
Y_pred.name = "\"ret\""
Y_pred = Y_pred.to_frame()
path = "prediction/Q1/"
try:
    os.makedirs(path)
except:
    pass

Y_pred.to_csv(path+instrument_tmp+"_ret.txt",sep=' ',quoting=csv.QUOTE_NONE)   
Run Code Online (Sandbox Code Playgroud)

然后我得到

"date" "ret"
2018-09-24 0.00013123989025119056
Run Code Online (Sandbox Code Playgroud)

csv escaping quoting export-to-csv pandas

3
推荐指数
2
解决办法
1万
查看次数

',(引号)在普通 lisp 中

',lisp 中反引号表达式的作用和用途是什么?它有名字吗?它是否记录在某处?它有多普遍和有用?

例如:

(defmacro test-exp (exp)
  `(format t "~&~S => ~S~%" ',exp ,exp))
Run Code Online (Sandbox Code Playgroud)

我的猜测是exp,在宏扩展时,它将采用字面上的任何内容,并',exp用它替换。(与评估exp和替换,exp它相反)。

escaping common-lisp quoting backquote

3
推荐指数
1
解决办法
541
查看次数

使用mapconcat连接包含变量的列表

我正在尝试使用mapconcat加入字符串列表,但无法弄清楚如何将变量包含在列表元素之一中.这就是我想要的:

(mapconcat #'identity '("" "path" "to" "someplace") "/")
=> "/path/to/someplace"
Run Code Online (Sandbox Code Playgroud)

但是当我尝试包含变量时:

(let ((path "someplace"))
  (mapconcat #'identity '("" "path" "to" path) "/"))
=> Wrong type argument: sequencep, path
Run Code Online (Sandbox Code Playgroud)

这也不起作用:

(let ((path "someplace"))
  (mapconcat #'(lambda (x) (format "%s" x)) '("" "path" "to" path) "/"))
=> "/path/to/path"
Run Code Online (Sandbox Code Playgroud)

任何人都能指出我在这里缺少的东西吗?

elisp string-concatenation quoting

2
推荐指数
1
解决办法
681
查看次数