测试/调试时的Bash条件重定向

约翰尼

有条件地在Bash中进行重定向以进行测试和调试的最佳方法是什么?

在我的脚本中,我添加了一个调试选项,以显示在没有任何处理的情况下有效地进行测试运行会发生的情况。如果debug选项启用了,我希望DEBUG选项回显带有重定向的脚本行,有效地回显重定向而不重定向回显一个示例可能会更好地解释这一点:

在使用传递给它的args进行mysqldump的脚本中,我希望debug选项显示mysqldump命令,因为如果不使用-d选项,它将运行。

[ "-d" = "$1" ] && DEBUG=echo
$DEBUG mysqldump -u"$user" -p"$pass" -h"$host" "$dbase" > $dbase.sql.dump

因此,如果我要回显的原因是DEBUG是“ echo”,则我不想回显到“ $ dbase.sql.dump”,而实际上我想使用“ .sql.dump”来回显“>”和“ $ dbase”变量。 “ 文本。如果debug选项没有打开,我想按原样运行命令。

set -xset -v自调试真的只是一个测试输出/干运行选项,用户可以看到,并没有真正的调试脚本来修复编码问题的选项是不是真的在这里的答案。

芒登

问题将是正确地转义所有内容。您为什么不尝试一个稍微不同的方法,例如:

CMD='mysqldump -u"$user" -p"$pass" -h"$host" "$dbase" > "$dbase.sql.dump"';
[ "-d" = "$1" ] && echo $CMD
eval $CMD

诀窍是将命令另存为变量,然后仅在调试时才打印变量。这消除了将其写出两次的需要,然后您就可以使用eval该变量来执行其中包含的命令。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django:当目标URL也是重定向时测试重定向

来自分类Dev

Javascript在条件满足时重定向

来自分类Dev

RSpec测试重定向

来自分类Dev

测试重定向的URL

来自分类Dev

测试登录重定向

来自分类Dev

WordPress的条件重定向

来自分类Dev

htaccess的条件重定向

来自分类Dev

.htaccess 重定向条件

来自分类Dev

Bash排序重定向

来自分类Dev

Bash重定向

来自分类Dev

Bash:含糊的重定向

来自分类Dev

基本的 bash 重定向

来自分类Dev

重定向命令输出时 Bash 不评估变量

来自分类Dev

灰烬测试路线重定向

来自分类Dev

测试页面重定向的问题

来自分类Dev

使用 serverspec 测试重定向

来自分类Dev

Laravel 5.2 Validator Throwing异常,而不是在调试模式关闭时重定向回

来自分类Dev

调试时,Visual Studio网站将HTTP重定向到https

来自分类Dev

仅在Chrome调试器打开时,Javascript重定向似乎才起作用

来自分类Dev

超级测试:测试重定向网址

来自分类Dev

超级测试:测试重定向网址

来自分类Dev

在 OpenSSH 中重定向调试输出

来自分类Dev

PHP重定向条件语句

来自分类Dev

条件重定向附加/覆盖

来自分类Dev

从awk条件重定向消息

来自分类Dev

在 Web 上进行测试时,Azure Web App 重定向到 localhost URL;在本地测试时重定向到 Web URL

来自分类Dev

bash:与重定向输出混淆

来自分类Dev

bash>禁止使用重定向(>)

来自分类Dev

Bash重定向同步困境