小编ron*_*nie的帖子

grep -e 和 grep -E 选项有什么区别?

我想明白之间的差别grep -egrep -E。现在从grep manpage我得到:

-E, --extended-regexp

将 PATTERN 解释为扩展的正则表达式(见下文)。

-e 模式, --regexp=模式

使用 PATTERN 作为模式;有助于保护以 - 开头的模式

上面的解释对我来说没有意义。

那么,有人可以使用examples两者之间的区别以及何时使用哪个选项向我解释它。

PS:版本:grep (GNU grep) 2.10

grep

49
推荐指数
2
解决办法
8万
查看次数

为什么我观察到不同的回声行为?

我观察到 echo 的以下行为

#!/bin/bash

x=" hello"

echo $x
echo "$x"
Run Code Online (Sandbox Code Playgroud)

现在,当我运行上面的代码时,我得到

ronnie@ronnie:~$ bash test.sh
hello
 hello
ronnie@ronnie:~$
Run Code Online (Sandbox Code Playgroud)

所以,有人可以向我解释为什么whitespace在第一种情况下不存在于输出中,并且还指向我定义此行为的文档。

bash echo quoting

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

如何将错误重定向到文件?

我有这个简单的脚本,它将输出和append它重定向到一个文件。

filename="/home/ronnie/tmp/hello"

date=$(date)
echo "$date" >> $filename
Run Code Online (Sandbox Code Playgroud)

现在,假设我更改date=$(date)date= $(date)哪个会产生错误。

我修改后的脚本:

filename="/home/ronnie/tmp/hello"

date= $(date)
echo "$date" >> $filename 2>> $filename 
#Also tried echo "$date" >> $filename 2>&1
Run Code Online (Sandbox Code Playgroud)

我在想上面的脚本会将错误重定向test.sh: line 5: Fri: command not found到文件,hello但它只是在文件中输入一个新行,错误会打印在我的stdout.

我的 bash 版本:

ronnier@ronnie:~/tmp$ bash --version
GNU bash, version 4.2.24(1)-release (i686-pc-linux-gnu)
Run Code Online (Sandbox Code Playgroud)

那么,我哪里出错了。

bash stdout stderr

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

标签 统计

bash ×2

echo ×1

grep ×1

quoting ×1

stderr ×1

stdout ×1