小编Tom*_*ski的帖子

为什么“bash -x”会破坏这个脚本?

我有一个脚本来测量某个命令执行的时间。

它需要“真实”time命令,意思是一个二进制文件,例如 in /usr/bin/time(因为 bash 内置没有-f标志)。

下面是一个可以调试的简化脚本:

#!/bin/bash

TIMESEC=$(echo blah | ( /usr/bin/time -f %e grep blah >/dev/null ) 2>&1 | awk -F. '{print $1}')

echo ABC--$TIMESEC--DEF

if [ "$TIMESEC" -eq 0 ] ; then
   echo "we are here!"
fi
Run Code Online (Sandbox Code Playgroud)

另存为“test.sh”并执行:

$ bash test.sh
ABC--0--DEF
we are here!
Run Code Online (Sandbox Code Playgroud)

所以它奏效了。

现在,让我们尝试通过在 bash 命令行中添加“-x”来调试它:

$ bash -x test.sh
++ echo blah
++ awk -F. '{print $1}'
+ TIMESEC='++ /usr/bin/time -f %e grep blah
0'
+ echo ABC--++ …
Run Code Online (Sandbox Code Playgroud)

bash shell-script

13
推荐指数
2
解决办法
1144
查看次数

标签 统计

bash ×1

shell-script ×1