linux - /bin/bash -x是什么意思?
巴扎黑
巴扎黑 2017-04-17 13:39:14
0
3
1446

例如一个脚本dumb.sh的内容为

#! /bin/bash idx=1 echo $idx

/bin/bash -x dumb.sh的结果为:

+idx=1
+echo 1
1

而且/bin/bash -x dumb.sh > trace.log后,trace.log内容仅为:

1

有什么办法将/bin/bash -x dumb.sh的整个结果保存下来么?

巴扎黑
巴扎黑

全員に返信 (3)
伊谢尔伦

处理方法:

/bin/bash -x dump.sh > trace.log 2>&1

原因:
用strace跟踪一下

strace /bin/bash -x dump.sh

结果:

write(2, "+ idx=1\n", 8+ idx=1 ) = 8 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 write(2, "+ echo 1\n", 9+ echo 1 ) = 9 write(1, "1\n", 21 ) = 2 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 read(255, "", 29) = 0 exit_group(0) = ?

可以看出+idx=1和+echo1是write(2,),这个是标准错误输出,虽然打屏幕,但是>默认不会把这个内容写入文件。
如下这个命令可以把标准错误重定向到1中

/bin/bash -x dump.sh > aa 2>&1
いいねを押す+0
    刘奇

    在man bash手册中章节:CONDITIONAL EXPRESSIONS,-x的意思是:

    -x file True if file exists and is executable.

    参数-x会列出shell执行语句的顺序并将其打印。+echo 1这种语句并不是脚本的输出,所以不能将其保存到文件中。

    いいねを押す+0
      黄舟

      -x 调试模式

      いいねを押す+0
        最新のダウンロード
        詳細>
        ウェブエフェクト
        公式サイト
        サイト素材
        フロントエンドテンプレート
        私たちについて 免責事項 Sitemap
        PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!