我通过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帮助
我编写了一个 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)
我们如何转义变量内的单引号?
我正在使用带有ag.vim插件的Silver Search.有谁知道如何使用正则表达式与:ag命令进行搜索?
通常,为了在字符串中嵌入引号,\使用(反斜杠)。
反斜杠在 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) 如何逃避报价和管道?
#!/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) 我通过命令获得提交位置
git rev-list HEAD --count
Run Code Online (Sandbox Code Playgroud)
例如,输出是 1164。我想签出此提交号。我怎样才能做到这一点?我认为,需要获取此提交的哈希值并签出以按其哈希值提交。
我想在程序启动时打印构建时间,例如:
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,同样的问题。
这可能是显而易见的事情,但我必须问,因为我没有看到它。
我试图在此文本文件中进行以下替换。我要这个:
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)
我在这里做错了什么?
我发出一个 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 帖子(包括如何在单引号字符串中转义单引号?),但我似乎无法找到任何可行的解决方案。链接的帖子讨论了单引号中的单引号,并通过使用双引号解决了这个问题。但是,我的单引号已经是双引号了。所以这个比较复杂。
非常感谢你的帮助。
我写了一个脚本 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命令的开始。