相关疑难解决方法(0)

如何在单引号字符串中转义单引号?

比方说,你有一个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)

看起来很笨拙虽然如果你允许这样连接它们就会代表相同的字符串.

syntax bash quoting

936
推荐指数
15
解决办法
40万
查看次数

在Bash中的命令中扩展变量在单引号内

我想从一个bash shell脚本运行一个命令,该脚本在单引号和变量中有单引号和一些其他命令.

例如 repo forall -c '....$variable'

在此格式中,$进行转义并且不扩展变量.

我尝试了以下变化,但他们被拒绝了:

repo forall -c '...."$variable" '

repo forall -c " '....$variable' "

" repo forall -c '....$variable' "

repo forall -c "'" ....$variable "'"
Run Code Online (Sandbox Code Playgroud)

如果我用值代替变量来执行命令就好了.

请告诉我哪里出错了.

variables bash shell quotes

344
推荐指数
3
解决办法
31万
查看次数

如何在双引号内逃避双引号?

任何人都可以告诉我如何在bash中的双字符串中避免双引号?

例如在我的shell脚本中

#!/bin/bash

dbload="load data local infile \"'gfpoint.csv'\" into table $dbtable FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY \"'\n'\" IGNORE 1 LINES"
Run Code Online (Sandbox Code Playgroud)

我无法\"正确使用双引号转义来获取ENCLOSED BY .我不能对我的变量使用单引号,因为我想使用变量$dbtable.

bash quotes

260
推荐指数
7
解决办法
34万
查看次数

何时在shell变量周围包装引号?

有人能告诉我是否应该在shell脚本中包含变量的引号?

例如,以下是正确的:

xdg-open $URL 
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)

要么

xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么?

unix linux bash shell quotes

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

启用远程MySQL连接:ERROR 1045(28000):拒绝用户访问

在Windows XP上运行的MySQL 5.1.31.

本地 MySQL服务器(192.168.233.142)我可以以root身份连接如下:

>mysql --host=192.168.233.142 --user=root --password=redacted
Run Code Online (Sandbox Code Playgroud)

远程计算机(192.168.233.163),我可以看到mysql端口是打开的:

# telnet 192.168.233.142 3306
Trying 192.168.233.142...
Connected to 192.168.233.142 (192.168.233.142).
Run Code Online (Sandbox Code Playgroud)

但是当我尝试从远程计算机连接到mysql时,我会收到:

# mysql --host=192.168.233.142 --user=root --password=redacted
ERROR 1045 (28000): Access denied for user 'root'@'192.168.233.163' (using password: YES)
Run Code Online (Sandbox Code Playgroud)

我在mysql.user中只有2个条目:

Host         User     Password
--------------------------------------
localhost    root     *blahblahblah
%            root     [same as above]
Run Code Online (Sandbox Code Playgroud)

我还需要做些什么来启用远程访问?

编辑

正如下面的Paulo所建议的,我尝试用特定于IP的条目替换%的mysql.user条目,因此我的用户表现在看起来像这样:

Host             User     Password
------------------------------------------
localhost        root     *blahblahblah
192.168.233.163  root     [same as above]
Run Code Online (Sandbox Code Playgroud)

然后我重新启动了机器,但问题仍然存在.

mysql

131
推荐指数
6
解决办法
28万
查看次数

shell中的变量插值

这可能是一个非常基本的问题,但由于某种原因,我似乎看起来很明显.

我有一个名为的变量 filepath=/tmp/name

要访问变量,我知道我可以这样做 $filepath

在我的shell脚本中,我试图做这样的事情(后面的刻度是有意的)

`tail -1 $filepath_newstap.sh`
Run Code Online (Sandbox Code Playgroud)

这行失败了,duuh!因为没有调用变量$filepath_newstap.sh

如何附加_newstap.sh到变量名称?请注意,后面的刻度表用于表达式评估

unix bash shell

89
推荐指数
3
解决办法
8万
查看次数

如何在Bash中的带引号的字符串中使用环境变量

我在bash脚本中尝试了以下各种形式:

#!/bin/bash
svn diff $@ --diff-cmd /usr/bin/diff -x "-y -w -p -W $COLUMNS"
Run Code Online (Sandbox Code Playgroud)

但我无法获得正确扩展COLUMNS环境变量的语法.

我尝试了以下各种形式:

svn diff $@ --diff-cmd /usr/bin/diff -x '-y -w -p -W $COLUMNS'
Run Code Online (Sandbox Code Playgroud)

svn diff $@ --diff-cmd /usr/bin/diff -x '-y -w -p -W ${COLUMNS}'
Run Code Online (Sandbox Code Playgroud)

eval svn diff $@ --diff-cmd /usr/bin/diff -x "-y -w -p -W $COLUMNS"
Run Code Online (Sandbox Code Playgroud)

建议?

bash environment quotes

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

使用变量替换shell脚本中的字符串

我使用下面的代码替换shell脚本中的字符串.

echo $LINE | sed -e 's/12345678/"$replace"/g'
Run Code Online (Sandbox Code Playgroud)

但它正在被替换$replace而不是该变量的值.

谁有人说出了什么问题?

unix shell sed

81
推荐指数
7
解决办法
38万
查看次数

如何在Bash参数中保留引号?

我有一个Bash脚本,我想在传递的参数中保留引号.

例:

./test.sh this is "some test"
Run Code Online (Sandbox Code Playgroud)

然后我想使用这些参数,并重用它们,包括整个参数列表的引号和引号.

我尝试使用\"$@\",但删除了列表中的引号.

我该如何做到这一点?

bash quotes

69
推荐指数
10
解决办法
7万
查看次数

用"sudo"重复上一个命令

我经常忘记运行命令sudo.我正在寻找一种方法来制作一个bash函数(或别名)来重复最后一个命令sudo.就像是:

S() {
    sudo $(history 1)
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

bash

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

标签 统计

bash ×8

quotes ×5

shell ×4

unix ×3

environment ×1

linux ×1

mysql ×1

quoting ×1

sed ×1

syntax ×1

variables ×1