相关疑难解决方法(0)

Bash中单引号和双引号之间的区别

在Bash中,单引号('')和双引号("")之间有什么区别?

syntax bash shell quotes

501
推荐指数
6
解决办法
17万
查看次数

回声"#!" 失败 - "未找到事件"

以下失败,我不明白为什么:

$ echo "#!"
Run Code Online (Sandbox Code Playgroud)

以下也失败并出现相同的错误消息:

$ echo "\#!"
Run Code Online (Sandbox Code Playgroud)

错误信息:

-bash: !": event not found
Run Code Online (Sandbox Code Playgroud)

为什么会失败?该怎么echo办呢?

bash echo ubuntu-12.04

13
推荐指数
3
解决办法
2157
查看次数

使用引用作为键的Bash hashmap

在Bash中,我想取消设置hashmap的条目.但我失败了.代码如下:

declare -A arr
arr["a'b"]=3
echo ${!arr[@]} ## output: a'b
key="a'b"
unset arr[$key] ## error: -bash: unset: `arr[a'b]': not a valid identifier
Run Code Online (Sandbox Code Playgroud)

我怎样才能取消此条目?

linux bash dictionary

6
推荐指数
1
解决办法
179
查看次数

如何在Bash命令替换中解决错误"bash:!d':event not found"

我试图解析VNC服务器启动事件的输出,并在命令替换中使用sed解析时遇到问题.具体来说,远程VNC服务器的启动方式如下:

address1="user1@lxplus.cern.ch"
VNCServerResponse="$(ssh "${address1}" 'vncserver' 2>&1)"
Run Code Online (Sandbox Code Playgroud)

然后解析在此启动事件中生成的标准错误输出,以便提取服务器和显示信息.此时变量的内容VNCServerResponse如下所示:

New 'lxplus0186.cern.ch:1 (user1)' desktop is lxplus0186.cern.ch:1

Starting applications specified in /afs/cern.ch/user/u/user1/.vnc/xstartup
Log file is /afs/cern.ch/user/u/user1/.vnc/lxplus0186.cern.ch:1.log
Run Code Online (Sandbox Code Playgroud)

可以通过以下方式解析此输出,以便提取服务器并显示信息:

echo "${VNCServerResponse}" | sed '/New.*desktop.*is/!d' \
    | awk -F" desktop is " '{print $2}'
Run Code Online (Sandbox Code Playgroud)

结果如下:

lxplus0186.cern.ch:1
Run Code Online (Sandbox Code Playgroud)

我想要做的是在命令替换中使用此解析,如下所示:

VNCServerAndDisplayNumber="$(echo "${VNCServerResponse}" \
    | sed '/New.*desktop.*is/!d' | awk -F" desktop is " '{print $2}')"
Run Code Online (Sandbox Code Playgroud)

在尝试这样做时,我收到以下错误:

bash: !d': event not found
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决这个问题.在命令替换中使用sed的方式似乎是一个问题.我很感激指导.

bash parsing sed command-substitution

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