相关疑难解决方法(0)

双方括号[[]]比Bash中的单方括号[]更好吗?

最近在一次代码审查中,一位同事声称该[[ ]]构造比[ ]在类似的构造中更受欢迎

if [ "`id -nu`" = "$someuser" ] ; then 
     echo "I love you madly, $someuser"
fi
Run Code Online (Sandbox Code Playgroud)

他无法提供理由.有吗?

syntax bash if-statement

514
推荐指数
8
解决办法
20万
查看次数

shell命令中"&&"的目的是什么?

据我所知,&在命令之后使用是为了在后台运行它.

&用法示例:tar -czf file.tar.gz dirname &

但是怎么样&&?(看看这个例子:https://serverfault.com/questions/215179/centos-100-disk-full-how-to-remove-log-files-history-etc#answer-215188)

syntax bash shell command-line

333
推荐指数
8
解决办法
34万
查看次数

如何从Bash中的字符串中删除最后n个字符?

var在一个包含字符串的Bash脚本中有一个变量,如:

echo $var
"some string.rtf"
Run Code Online (Sandbox Code Playgroud)

我想删除此字符串的最后4个字符并将结果分配给新变量var2,以便

echo $var2
"some string"
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

bash

163
推荐指数
11
解决办法
22万
查看次数

在SSH会话中查找客户端的IP地址

我有一个脚本由一个用SSH登录服务器的人运行.

有没有办法自动找出用户连接的IP地址?

当然,我可以问用户(这是程序员的工具,所以没问题),但如果我发现它会更酷.

linux ssh networking ip-address

151
推荐指数
8
解决办法
18万
查看次数

何时在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万
查看次数

如何在shell脚本中删除文件名的扩展名?

以下代码有什么问题?

name='$filename | cut -f1 -d'.''
Run Code Online (Sandbox Code Playgroud)

因为,我得到文字字符串$filename | cut -f1 -d'.',但如果我删除引号,我什么都没得到.同时打字

"test.exe" | cut -f1 -d'.'
Run Code Online (Sandbox Code Playgroud)

在shell中给我输出我想要的输出test.我已经知道$filename已经分配了正确的价值.我想要做的是为变量分配没有扩展名的文件名.

bash shell cut sh gnu-coreutils

121
推荐指数
7
解决办法
20万
查看次数

什么linux shell命令返回字符串的一部分?

我想找一个可以返回字符串一部分的linux命令.在大多数编程语言中,它都是substr()功能.bash是否有任何可用于此目的的命令.我希望能够做这样的事情...... substr "abcdefg" 2 3- 打印cde.


随后的类似问题:

linux string bash substr

91
推荐指数
6
解决办法
20万
查看次数

我刚刚分配了一个变量,但echo $ variable显示了其他内容

以下是一系列echo $var可以显示与刚刚分配的值不同的值的情况.无论指定的值是"双引号","单引号"还是不引用,都会发生这种情况.

如何让shell正确设置我的变量?

星号

预期的输出是/* Foobar is free software */,但我得到一个文件名列表:

$ var="/* Foobar is free software */"
$ echo $var 
/bin /boot /dev /etc /home /initrd.img /lib /lib64 /media /mnt /opt /proc ...
Run Code Online (Sandbox Code Playgroud)

方括号

期望值是[a-z],但有时我会得到一个字母!

$ var=[a-z]
$ echo $var
c
Run Code Online (Sandbox Code Playgroud)

换行(换行符)

预期值是一个单独的行列表,但所有值都在一行!

$ cat file
foo
bar
baz

$ var=$(cat file)
$ echo $var
foo bar baz
Run Code Online (Sandbox Code Playgroud)

多个空间

我期望一个精心对齐的表头,但是多个空格要么消失要么折叠成一个!

$ var="       title     |    count"
$ echo $var
title | count
Run Code Online (Sandbox Code Playgroud)

标签

我期望两个制表符分隔值,但我得到两个空格分隔值!

$ …
Run Code Online (Sandbox Code Playgroud)

bash shell sh quoting

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

为什么/ bin/sh与/ bin/bash的行为不同,即使一个指向另一个?

当我在我的shell中调查这个问题的答案时,我注意到,即使/bin/sh指向/bin/bash我的系统,这两个命令的行为也不同.首先,输出

ls -lh /bin/sh
Run Code Online (Sandbox Code Playgroud)

是:

lrwxrwxrwx 1 root root 4 Apr 22  2013 /bin/sh -> bash*
Run Code Online (Sandbox Code Playgroud)

但是,通过以下方式调用以下命令/bin/sh:

/bin/sh -c "script.sh 2> >( grep -v FILTER 2>&1 )"
Run Code Online (Sandbox Code Playgroud)

返回此错误:

/bin/sh: -c: line 0: syntax error near unexpected token '>'
/bin/sh: -c: line 0: 'script.sh 2> >( grep -v FILTER 2>&1 )'
Run Code Online (Sandbox Code Playgroud)

通过/bin/bash以下命令运行相同的命令:

/bin/bash -c "script.sh 2> >( grep -v FILTER 2>&1 )"
Run Code Online (Sandbox Code Playgroud)

执行成功,这是输出:

This should be on stderr
Run Code Online (Sandbox Code Playgroud)

供参考,以下是以下内容script.sh: …

linux bash shell sh

64
推荐指数
4
解决办法
7225
查看次数

Bash正则表达式=〜运算符

操作员=~叫什么?它只用于比较左侧的右侧吗?

运行测试时为什么需要双方括号?

即. [[ $phrase =~ $keyword ]]

谢谢

unix bash shell

47
推荐指数
3
解决办法
5万
查看次数