为什么在bash脚本vs bash命令行中运行相同的sed regex(在grep之后)失败?

ha

这是脚本。当我从BASH提示符下运行它时,它成功了,但是在脚本中却没有。有任何想法吗?


当我说“失败”时,我的意思是sed regex不匹配任何内容,因此没有被替换的文本。当我在命令行上运行它时,它会匹配。

另外,我可能对此有一个答案。这与我的grep别名和GREP_OPTIONS奇怪的相互作用有关。我将回发有关这些细节。

#!/bin/bash

for ((x = 101; x <= 110; x++)); do
    urls="${urls} www$x.site.com/config"
done;

curl -s ${urls} | grep -i "Git Commit" | sed -r "s/.*Git Commit<\/td><td>([^<]+).*/\1/g"
ha

实际上,我能够弄清楚这一点,我想在这里添加它给下一个谷歌用户,他们将头撞到同一堵墙。

我有一个grep别名 GREP_OPTIONS设置了。这导致颜色高亮显示仍保留在脚本中,即使在管道传输到另一个命令时也是如此。通常与搭配不好sed

这是我的.alias和选项:

alias grep='grep -i --color'
export GREP_OPTIONS="--color=always"

因此,从脚本运行时,它不使用别名命令,因此会强制始终启用颜色。因此,当我检查我的别名并看到该--color选项时(即auto,这意味着“不要对通过管道传递到另一个命令的输出进行着色”)(例如sed)。

我很困惑,因为我忘记也设置GREP_OPTIONS了,所以我希望grep脚本colorauto的默认设置为默认值(如果我没有设置global的话GREP_OPTIONS)。但事实并非如此。

这是我的新设置(我相信--colorto标记GREP_OPTIONS是多余的,但我将其留在此处作为提醒):

alias grep='grep --color=always'
export GREP_OPTIONS="--ignore-case --color"

这样,无论何时我在命令行上,我都将突出显示所有我的抱怨(这通常是我想要的)。但是在脚本中,仅当不通过管道传递给另一个命令时,它才会默认为着色。我仍然必须在许多脚本中都添加--color = always(因为在大多数情况下,即使在通过管道传递到另一个命令时,我通常倾向于突出显示,除非我从未看到输出)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么grep在脚本而不是命令行中失败

来自分类Dev

使用 'watch' 的 Bash 脚本失败。为什么?

来自分类Dev

bash命令行中的Echo Regex匹配组

来自分类Dev

Bash脚本在命令行起作用的地方失败

来自分类Dev

为什么我的bash脚本在|之后不使用sudo?

来自分类Dev

为什么将awk放入bash脚本时会失败

来自分类Dev

基于bash脚本的init.d失败,为什么?

来自分类Dev

与bash命令行相比,rsync从QProcess运行的方式有所不同

来自分类Dev

与bash命令行相比,rsync从QProcess运行的方式有所不同

来自分类Dev

Bash(sed)脚本直接从命令行运行,但不能通过监视运行

来自分类Dev

为什么此shell脚本在bash中失败,但是命令在SSH中起作用?

来自分类Dev

bash:为什么()在脚本中导致错误,但在命令行中却没有?

来自分类Dev

BASH:grep在shell脚本中不起作用,但是echo显示正确的命令,并且可以在命令行中使用

来自分类Dev

在bash脚本中获取命令行

来自分类Dev

从命令行运行相同的脚本时,从 scala 执行 python 脚本给出错误不会

来自分类Dev

Ruby 脚本在命令行上运行良好,但在 Jenkins 中失败

来自分类Dev

在命令行上运行MSTest时,测试失败,但在VS2012中通过

来自分类Dev

bash:在cron作业中使用scp失败,但是从命令行运行时成功运行

来自分类Dev

为什么从命令行运行时导入失败,而从PyCharm运行则导入成功?

来自分类Dev

Bash函数在脚本中的行为不同于在命令行上手动输入时的行为,为什么?

来自分类Dev

Bash:为什么在解析命令行参数的脚本中使用eval和shift?

来自分类Dev

无法从“ Linux命令行,完整介绍,第二版”中运行bash脚本示例

来自分类Dev

sed可在命令行上运行,但不能在脚本中运行

来自分类Dev

在Mac OS恢复模式下,为什么mv在bash 3.2中的此(bash)shell脚本中失败?

来自分类Dev

Ubuntu 中的 chmod 命令可从命令行运行,但不能从 bash 脚本运行

来自分类Dev

为什么bash脚本使用,如果和grep工作每隔一个电话吗?

来自分类Dev

遍历Bash中的命令行参数

来自分类Dev

处理bash中在命令行中传递的文件中FOR循环中带有空格的文件失败

来自分类Dev

Bash-脚本中的命令行参数被更改

Related 相关文章

  1. 1

    为什么grep在脚本而不是命令行中失败

  2. 2

    使用 'watch' 的 Bash 脚本失败。为什么?

  3. 3

    bash命令行中的Echo Regex匹配组

  4. 4

    Bash脚本在命令行起作用的地方失败

  5. 5

    为什么我的bash脚本在|之后不使用sudo?

  6. 6

    为什么将awk放入bash脚本时会失败

  7. 7

    基于bash脚本的init.d失败,为什么?

  8. 8

    与bash命令行相比,rsync从QProcess运行的方式有所不同

  9. 9

    与bash命令行相比,rsync从QProcess运行的方式有所不同

  10. 10

    Bash(sed)脚本直接从命令行运行,但不能通过监视运行

  11. 11

    为什么此shell脚本在bash中失败,但是命令在SSH中起作用?

  12. 12

    bash:为什么()在脚本中导致错误,但在命令行中却没有?

  13. 13

    BASH:grep在shell脚本中不起作用,但是echo显示正确的命令,并且可以在命令行中使用

  14. 14

    在bash脚本中获取命令行

  15. 15

    从命令行运行相同的脚本时,从 scala 执行 python 脚本给出错误不会

  16. 16

    Ruby 脚本在命令行上运行良好,但在 Jenkins 中失败

  17. 17

    在命令行上运行MSTest时,测试失败,但在VS2012中通过

  18. 18

    bash:在cron作业中使用scp失败,但是从命令行运行时成功运行

  19. 19

    为什么从命令行运行时导入失败,而从PyCharm运行则导入成功?

  20. 20

    Bash函数在脚本中的行为不同于在命令行上手动输入时的行为,为什么?

  21. 21

    Bash:为什么在解析命令行参数的脚本中使用eval和shift?

  22. 22

    无法从“ Linux命令行,完整介绍,第二版”中运行bash脚本示例

  23. 23

    sed可在命令行上运行,但不能在脚本中运行

  24. 24

    在Mac OS恢复模式下,为什么mv在bash 3.2中的此(bash)shell脚本中失败?

  25. 25

    Ubuntu 中的 chmod 命令可从命令行运行,但不能从 bash 脚本运行

  26. 26

    为什么bash脚本使用,如果和grep工作每隔一个电话吗?

  27. 27

    遍历Bash中的命令行参数

  28. 28

    处理bash中在命令行中传递的文件中FOR循环中带有空格的文件失败

  29. 29

    Bash-脚本中的命令行参数被更改

热门标签

归档