linux – 如何为bash文件生成的每个命令分隔输出?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 如何为bash文件生成的每个命令分隔输出?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2317字,纯文字阅读大概需要4分钟。
内容图文
![linux – 如何为bash文件生成的每个命令分隔输出?](/upload/InfoBanner/zyjiaocheng/961/87cab4521fd24e7193b711660d9e4e77.jpg)
假设我们有一个类似下面的bash脚本:
echo test
ls -alh
pwd
echo test2
因此,文件上可以有任意数量的命令,每个命令产生或不产生自己的输出.
然后上面的文件就像这个/ bin / bash -xe test.sh一样运行,它将产生以下输出:
+ echo test
test
+ ls -alh
total 32
drwx------+ 6 daniels staff 204B Apr 3 23:33 .
drwxr-xr-x+ 64 daniels staff 2.1K Apr 4 01:53 ..
-rw-r--r--@ 1 daniels staff 6.0K Apr 3 23:33 .DS_Store
drwxr-xr-x 5 daniels staff 170B Mar 15 17:03 Todo
-rw-r--r--@ 1 daniels staff 282B Apr 3 20:39 test.py
-rw-r--r--@ 1 daniels staff 97B Apr 4 01:52 test.sh
+ pwd
/Users/daniels/Desktop
+ echo test2
test2
有没有办法解析生成的输出可靠,并找出如何根据每个命令分离输出?
对于上面的示例,我们应该能够分离并提取一个组:
+ echo test
test
另一个
+ ls -alh
total 32
drwx------+ 6 daniels staff 204B Apr 3 23:33 .
drwxr-xr-x+ 64 daniels staff 2.1K Apr 4 01:53 ..
-rw-r--r--@ 1 daniels staff 6.0K Apr 3 23:33 .DS_Store
drwxr-xr-x 5 daniels staff 170B Mar 15 17:03 Todo
-rw-r--r--@ 1 daniels staff 282B Apr 3 20:39 test.py
-rw-r--r--@ 1 daniels staff 97B Apr 4 01:52 test.sh
等等
我正在考虑解析输出并查看行是否以该行开始,然后将其作为一个命令的开头,然后您可以轻松地使用echo ok这样的操作会使该逻辑失败.
如果我们可以修改/ bin / bash -x输出的字符,那么另一种选择就是这样,而不是输出像https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text这样的东西,但看起来像是在bash中硬编码而不是可配置的.
有任何想法吗?
解决方法:
不是硬编码的,这很容易在man bash和-x的帮助集中描述:
-x After expanding each simple command, for command,
case command, select command, or arithmetic for
command, display the expanded value of PS4, fol‐
lowed by the command and its expanded arguments or
associated word list.
这里是PS4的进一步描述,也来自man bash:
PS4 The value of this parameter is expanded as with PS1 and
the value is printed before each command bash displays
during an execution trace. The first character of PS4 is
replicated multiple times, as necessary, to indicate mul‐
tiple levels of indirection. The default is ``+ ''.
这是一个例子:
$PS4=$'\nAnd now, a word from '; set -x; date; uptime
And now, a word from date
Mon Apr 3 16:20:35 PDT 2017
And now, a word from uptime
16:20:35 up 65 days, 1:24, 6 users, load average: 1.20, 1.42, 1.37
你可以使用它来嵌入你认为合适的特殊标记或字符.
内容总结
以上是互联网集市为您收集整理的linux – 如何为bash文件生成的每个命令分隔输出?全部内容,希望文章能够帮你解决linux – 如何为bash文件生成的每个命令分隔输出?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。