如何计算执行时间和获取命令退出代码
How to Calculate Execution Time and Get Command Exit Code
我写了一个 shell 脚本,我想获取命令的执行时间,但我也将命令的输出重定向到一个文件。此外,我需要获取此特定命令的退出代码才能在 if 语句中使用它。这是我尝试过的:
...
TIMEFORMAT=%R
log_file() {
echo "$PROJECT_DIR/logs/_$(date +%Y%m%d_%H%M%S).log"
}
CODE_TIME=$(time sh -c "ipython -c "%run ./foo.ipynb" > $(log_file "log_file_name") 2>&1")
CODE_RESULT=$?
echo "Code_Result: $CODE_RESULT"
if [ "$CODE_RESULT" -eq 0 ]
...
根据 time
的文档,它 returns 命令的退出代码,但我还在函数中执行了 echo
命令。那么,有人知道如何获取 ipython
命令的退出代码吗?谢谢
您在示例通话中的引用不寻常。我希望
sh -c "ipython -c "%run ./foo.ipynb" > $(log_file "log_file_name") 2>&1"
翻译成
sh -c 'ipython -c %run' './foo.ipynb > somewhere/logs/log_file_name_somedate.log 2>&1'
至于 time
wrt return 代码的行为,我的 bash
(5.1.16) 行为如下:
$ time ls "I do not exist" > $(echo newfile) 2>&1
real 0m0,004s
user 0m0,004s
sys 0m0,000s
$ echo $?
2
$ cat newfile
"I do not exist": No such file or directory (os error 2)
然后像这样重定向:
$ capture="$(time (ls "I do not exist" > $(echo newfile2) 2>&1) 2>&1)"
$ echo $?
2
$ echo "$capture"
real 0m0,004s
user 0m0,004s
sys 0m0,000s
$ cat newfile2
"I do not exist": No such file or directory (os error 2)
因此,我建议您尝试将电话改为:
CODE_TIME="$(time (sh -c "ipython -c '%run ./foo.ipynb' > $(log_file "log_file_name") 2>&1") 2>&1)"
CODE_RESULT=$?
我写了一个 shell 脚本,我想获取命令的执行时间,但我也将命令的输出重定向到一个文件。此外,我需要获取此特定命令的退出代码才能在 if 语句中使用它。这是我尝试过的:
...
TIMEFORMAT=%R
log_file() {
echo "$PROJECT_DIR/logs/_$(date +%Y%m%d_%H%M%S).log"
}
CODE_TIME=$(time sh -c "ipython -c "%run ./foo.ipynb" > $(log_file "log_file_name") 2>&1")
CODE_RESULT=$?
echo "Code_Result: $CODE_RESULT"
if [ "$CODE_RESULT" -eq 0 ]
...
根据 time
的文档,它 returns 命令的退出代码,但我还在函数中执行了 echo
命令。那么,有人知道如何获取 ipython
命令的退出代码吗?谢谢
您在示例通话中的引用不寻常。我希望
sh -c "ipython -c "%run ./foo.ipynb" > $(log_file "log_file_name") 2>&1"
翻译成
sh -c 'ipython -c %run' './foo.ipynb > somewhere/logs/log_file_name_somedate.log 2>&1'
至于 time
wrt return 代码的行为,我的 bash
(5.1.16) 行为如下:
$ time ls "I do not exist" > $(echo newfile) 2>&1
real 0m0,004s
user 0m0,004s
sys 0m0,000s
$ echo $?
2
$ cat newfile
"I do not exist": No such file or directory (os error 2)
然后像这样重定向:
$ capture="$(time (ls "I do not exist" > $(echo newfile2) 2>&1) 2>&1)"
$ echo $?
2
$ echo "$capture"
real 0m0,004s
user 0m0,004s
sys 0m0,000s
$ cat newfile2
"I do not exist": No such file or directory (os error 2)
因此,我建议您尝试将电话改为:
CODE_TIME="$(time (sh -c "ipython -c '%run ./foo.ipynb' > $(log_file "log_file_name") 2>&1") 2>&1)"
CODE_RESULT=$?