我有一个 bash 脚本,其中包含基于我在调用它时传入的命令行参数的各种 if 语句。关于正在运行的命令的某种输出有助于确认所有这些 if 语句的流程,但我当前的解决方案给了我太多信息。
set -v
在脚本中使用对于查看在脚本中运行时打印到屏幕上的命令有些帮助,但是我得到了太多命令。它几乎就像脚本的完整副本。
我想要显示正在运行的命令的输出,但我不想在 if 语句中看到注释、新行、表达式等。
有没有办法在打印之前首先通过正则表达式传递 -v 选项生成的所有可能的输出?或者其他一些解决方案让 bash 只输出某种“类型”的命令(例如,使用可执行文件而不仅仅是 bash 特定的语句、注释等?)
[1] /sf/ask/18033151/对此非常有帮助,也是我得到使用建议的地方set -v
。
编辑:
与我正在运行的脚本类似(但不完全相同)的脚本:
#!/bin/bash
#get verbose command output
set -v
env=$1
if [ "$env" == "dev" ]; then
python ascript.py
fi
if [ "$env" == "prod" ]; then
#launching in prod will most likely fail if not run as root. Warn user if not running as root.
if [ $EUID …
Run Code Online (Sandbox Code Playgroud) 我最近下载了 IntelliJ IDEA 并通过运行. idea.sh
. 该应用程序在我运行时出现在启动器中,但由于某种原因,当我右键单击它时,我没有像其他应用程序那样获得“锁定到启动器”选项。
如何将其附加到启动器?
是不是因为我正在运行脚本而不是直接禁用该选项的可执行文件?
如果
ls -aR | grep ":$"
回报
./.hiddendir2:
./dir1:
./dir3:
./dir3/.hiddendir4:
Run Code Online (Sandbox Code Playgroud)
那么你如何更新给 grep 的模式,以便你只得到
./dir1:
./dir3:
Run Code Online (Sandbox Code Playgroud)
(请注意,包含 .hiddendir4 的最后一行被省略,即使它的父级未被隐藏)
这是同一问题的冗长版本,带有一些上下文:
我在http://www.centerkey.com/tree/上找到了一个很棒的脚本,用于打印目录树,但输出有时会被我正在处理的存储库的 .git 目录的后代弄乱。
如果我正确地阅读了源代码,我需要更改这一行的 grep 的模式:
ls -aR | grep ":$"
到目前为止,我想出了在http://regexpal.com/^\./(?!\.)\w+:$
上测试时似乎可行的方法,但当我尝试在 bash 中运行时就崩溃了。我怀疑(1)我使用的正则表达式测试工具之间的差异与 grep 如何解析模式,(2)bash 转义字符要求和(3)模式设计的组合都需要解决才能解决这个问题。在我最终在这方面花费太长时间之前,感谢您的帮助。