相关疑难解决方法(0)

转义单引号ssh远程命令

我通过ssh阅读远程命令中的单引号转义解决方案.但是任何工作都有风险.

我尝试着

ssh root@server "ps uax|grep bac | grep -v grep | awk '{ print $2 }' > /tmp/back.tmp"
Run Code Online (Sandbox Code Playgroud)

不要工作awk

ssh root@server "ps uax|grep bac | grep -v grep | awk \'{ print $2 }\' > /tmp/back.tmp"
....
awk: '{
awk: ^ caracter ''' inválido en la expresión
Run Code Online (Sandbox Code Playgroud)

并尝试在命令上放置单个配额但也不起作用.

Aprecite帮助

ssh bash quotes double-quotes

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

对 shell 变量中的单引号进行转义

我编写了一个 Bash 脚本来将值插入SQLite数据库。命令如下:

sqlite3 ${db_name} "insert into ${table_name} (${column1},${column2}) values ('$f1','$f2');"
Run Code Online (Sandbox Code Playgroud)

此命令可以正常工作,直到f1变量包含单引号:

# E.g., f1="I'm just kidding"
# The command reported an error:
Error: near "m": syntax error
Run Code Online (Sandbox Code Playgroud)

我们如何转义变量内的单引号?

bash shell

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

如何使用带Vim ag的正则表达式(银色搜索)

我正在使用带有ag.vim插件的Silver Search.有谁知道如何使用正则表达式与:ag命令进行搜索?

vim

4
推荐指数
2
解决办法
2758
查看次数

我想在字符串中嵌入单引号

通常,为了在字符串中嵌入引号,\使用(反斜杠)。

反斜杠在 Bash 脚本中是否有不同的含义?

我的下面的代码不起作用:未包含引号,并报告了以下错误:

recursive_merge.sh: line 7: unexpected EOF while looking for matching `''
recursive_merge.sh: line 14: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)

我没有解释。14号线根本不存在。

 #!/bin/bash
#############this file should be in the directory directly upper than p0x. sphnum.txt should also be at the same directory
for i in 02 03 04 05 06 07 09 10 11 12 13 14 15 16 17 20 21 22 23 24 25; do
 x=$(grep $i sphnum.txt |cut -c5-6)
 y=$(grep $i sphnum.txt …
Run Code Online (Sandbox Code Playgroud)

linux bash sh

4
推荐指数
1
解决办法
3075
查看次数

以bash字符串转义引号和管道

如何逃避报价和管道?

#!/bin/bash
set -x
MYCMD="VBoxManage showvminfo --machinereadable $1 \| grep \'VMState=\"poweroff\"\'"
echo "`$MYCMD`"
Run Code Online (Sandbox Code Playgroud)

执行命令:

++ VBoxManage showvminfo --machinereadable d667 '|' grep '\'\''VMState="poweroff"\'\'''
Run Code Online (Sandbox Code Playgroud)

最后得到这个错误:

Syntax error: Invalid parameter '|'
Run Code Online (Sandbox Code Playgroud)

bash

4
推荐指数
1
解决办法
2442
查看次数

如何通过其编号(--count)获取 git commit hash

我通过命令获得提交位置

git rev-list HEAD --count
Run Code Online (Sandbox Code Playgroud)

例如,输出是 1164。我想签出此提交号。我怎样才能做到这一点?我认为,需要获取此提交的哈希值并签出以按其哈希值提交。

git

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

如何使用自定义环境变量“go build -ldflags”

我想在程序启动时打印构建时间,例如:

package main

import "fmt"

var BuildTime string

func main() {
    fmt.Println(BuildTime)
}
Run Code Online (Sandbox Code Playgroud)

我尝试将环境变量设置为当前时间set bt (date),确保echo $bt显示时间。

然后使用 进行构建go build -ldflags "-X main.BuildTime=$bt",但它无法构建并显示某些链接器的用法,例如:

呃

我尝试了一些系统变量,例如 $USER/$PWD/$TERM,例如go build -ldflags "-X main.BuildTime=$USER",一切正常,为什么不工作$bt

我使用的是fish shell,但我也尝试过bash,同样的问题。

environment-variables go

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

Perl 单行正则表达式无法正确替换 - 返回错误

这可能是显而易见的事情,但我必须问,因为我没有看到它。

我试图在此文本文件中进行以下替换。我要这个:

bind_password = 'grafana'
Run Code Online (Sandbox Code Playgroud)

变成这样:

bind_password = ''
Run Code Online (Sandbox Code Playgroud)

我尝试在包含该行的文件上使用以下正则表达式单行:

$ perl -0pe 's/(bind_password = \')grafana\'/$1\'/g' file.txt
bash: syntax error near unexpected token `)'
Run Code Online (Sandbox Code Playgroud)

当我在 regex101 上尝试正则表达式时,效果很好: https: //regex101.com/r/0fb4Pu/1。不同之处在于我必须转义单引号。我尝试在正则表达式周围使用双引号而不是单引号,如下所示:

perl -0pe "s/(bind_password = ')grafana'/$1'/g" file.txt
Run Code Online (Sandbox Code Playgroud)

但是,虽然这不会返回错误,但它并没有达到我想要的效果。相反,它用一个冒号替换字符串,如下所示:

'
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?

bash perl

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

在单引号内转义双引号内的单引号

我发出一个 curl 命令,理想情况下看起来像这样(请注意,由于缺乏转义,这是不正确的):

curl -X POST --data-urlencode 'payload={"channel": "@somebody", "text": "I'm sending you a test message. Let me know if you get it."}' https://hooks.slack.com/services/XXX
Run Code Online (Sandbox Code Playgroud)

我是单词中的单引号导致此失败。但是,我不确定如何转义此引用,因为有多个级别的嵌套引用。

作为第二个问题,如果文本字符串中有双引号怎么办?那些人怎么可能逃脱?

我已经阅读了有关转义的内容并查看了其他 SO 帖子(包括如何在单引号字符串中转义单引号?),但我似乎无法找到任何可行的解决方案。链接的帖子讨论了单引号中的单引号,并通过使用双引号解决了这个问题。但是,我的单引号已经是双引号了。所以这个比较复杂。

非常感谢你的帮助。

bash quoting

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

在远程节点上的 ssh 命令中使用 SED

我写了一个脚本 ssh 到一些节点并sed在节点内运行一个命令。脚本看起来像

NODES="compute-0-3"
for i in $NODES 
do
  echo $i
  ssh $i 'sed -i \'s/172.16.48.70/172.20.54.10/g\' /etc/hosts;'
done
Run Code Online (Sandbox Code Playgroud)

但是,错误是

unexpected EOF while looking for matching `''
syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)

似乎字符'不被视为sed命令的开始。

ssh bash sed

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

标签 统计

bash ×7

ssh ×2

double-quotes ×1

environment-variables ×1

git ×1

go ×1

linux ×1

perl ×1

quotes ×1

quoting ×1

sed ×1

sh ×1

shell ×1

vim ×1