相关疑难解决方法(0)

命令以毫秒为单位获取时间

Linux中是否有shell命令以毫秒为单位获取时间?

linux bash shell time

257
推荐指数
9
解决办法
32万
查看次数

如何调试bash脚本?

有没有办法调试bash脚本?例如,打印一种执行日志的东西,如"呼叫线路1","呼叫线路2"等.

bash shell

155
推荐指数
5
解决办法
16万
查看次数

将-x调试命令捕获到Bash中的文件中

set -x在bash中使用将shell扩展命令打印到stderr.我想将它们重定向到文件或管道.但不是整个输出 - 只有一些命令.就像是:

set -x command.txt  ### <-- command.txt param is made up
echo $A $B
set +x
Run Code Online (Sandbox Code Playgroud)

这会将调试输出发送到命令.文本.

可以这样做吗?

debugging bash

15
推荐指数
1
解决办法
6048
查看次数

如何调试bash脚本并获得每个命令的执行时间

我有一个bash脚本,需要将近5秒钟才能运行.我想调试它,并确定哪些命令花费的时间最长.这样做的最佳方式是什么?我可以设置一个标志吗?设置#!/bin/bash -vx并没有真正帮助.我想要的基本上是按行号执行时间.

linux bash

11
推荐指数
3
解决办法
2552
查看次数

ZSH 脚本和提示分析?

这个答案“如何分析 bash shell 脚本? ”似乎几乎完美地涵盖了我在这里尝试完成的工作。我目前有一些修改提示的 zsh 脚本,但是我认为 oh-my-zsh 的一些更新引发了一些我需要追查的问题。时不时的呆滞让人难以忍受。

为此,您将如何调整此示例答案中的提示部分以使用 zsh 与 bash?

目前我已经修改/etc/zshenv,使其具有示例中的初始建议代码:

PS4='+ $(date "+%s.%N")\011 '
exec 3>&2 2>/tmp/bashstart.$$.log
set -x
Run Code Online (Sandbox Code Playgroud)

~/.zshrc的尾部附加了以下内容:

set +x
exec 2>&3 3>&-
Run Code Online (Sandbox Code Playgroud)

当然,这些对于 ZSH shell 定制是无效的。我的提示渲染代码使用 oh-my-zsh 自定义。我可以在我想的提示前添加适当的代码,或者我愿意接受其他建议。

bash zsh zshrc

6
推荐指数
1
解决办法
1301
查看次数

SIGINT取消bash脚本中的读取?

我正在编写一个bash包装器来学习一些脚本概念.我们的想法是在bash中编写一个脚本,并在登录时将其设置为用户的shell.

我做了一个while循环reads和evals用户的输入,然后注意到,每当用户输入时CTRL + C,脚本都会中止,因此用户会话结束.

为了避免这种情况,我陷入SIGINT了陷阱,无所事事.

现在,问题在于当你输入CTRL + C一半命令时,它不会被取消,就像在bash上那样 - 它只是忽略了CTRL + C.

所以,如果我输入ping stockoverf^Cping stackoverflow.com,我得到的ping stockoverfping stackoverflow.com不是ping stackoverflow.com我想要的.

有没有办法做到这一点?

#!/bin/bash

# let's trap SIGINT (CTRL + C)
trap "" SIGINT

while true
do
    read -e -p "$USER - SHIELD: `pwd`> " command
    history -s $command
    eval $command
done
Run Code Online (Sandbox Code Playgroud)

bash sigint

6
推荐指数
2
解决办法
1078
查看次数

在bash中,如何分析我脚本某些部分的运行时间?

在Java程序中,我通常使用以下函数来分析时间信息:

...
long start = System.currentTimeMillis();
...
...
System.out.println("elapsed time 1: "+(System.currentTimeMills() - start));
...
...
start = System.currentTimeMillis();
...
System.out.println("elapsed time 2: "+(System.currentTimeMills() - start));
...
Run Code Online (Sandbox Code Playgroud)

如何在shell bash中做类似的事情?此外,如果有循环,如何收集累计时间?

例如

for ((i=0;i<$lines;i=i+$step))
do    
    head -$((i+step)) $1 | tail -$step > tmp1
    head -$((i+step)) $2 | tail -$step > tmp2
    setstr=$setstr' '`./accuracy.sh tmp1 tmp2`
done
echo $setstr | awk '{for (i=1;i<=NF;i++) sum+=$i; }END{print sum/NF}'
Run Code Online (Sandbox Code Playgroud)

我想分别分析累计的head/tail时间和accuracy.sh tmp1 tmp2时间.

bash shell

3
推荐指数
1
解决办法
1874
查看次数

在 while 循环 bash 中通过多个值重复输出循环

我试图在 bash 中使用 while 循环来遍历 3 个文件的内容。它们包含名称、aws 账户和 aws 账号的列表。

但循环不正确,它不断重复列表中的第一个名称和列表中的第一个 aws 环境。

这是我看到的输出:

AWS user name: aadatiya does not exist in AWS account: company-lab
AWS user name: aadatiya does not exist in AWS account: company-lab
AWS user name: aadatiya does not exist in AWS account: company-lab
AWS user name: aadatiya does not exist in AWS account: company-lab
AWS user name: aadatiya does not exist in AWS account: company-lab
AWS user name: aadatiya does not exist in AWS account: company-lab …
Run Code Online (Sandbox Code Playgroud)

bash

1
推荐指数
1
解决办法
824
查看次数

标签 统计

bash ×8

shell ×3

linux ×2

debugging ×1

sigint ×1

time ×1

zsh ×1

zshrc ×1