测试bash shell脚本

Mr *_*eth 9 bash shell

有人可以解释如何测试bash shell脚本吗?

例如,我有一个包含此代码的.sh文件...

#!/bin/sh

for file in *.txt; do
    mv "$file" "`basename $file .txt`.doc"
done
Run Code Online (Sandbox Code Playgroud)

我该如何为它编写测试?就像在Java中一样,你有单元测试,你可以在其中编写像assertEquals这样的代码来测试代码,从而得到所需的输出.

Mar*_*dov 6

你可以在Bash中做断言.从Advanced Bash-Scripting Guide中查看:

http://tldp.org/LDP/abs/html/debugging.html#ASSERT

  • @CharlesDuffy 一般来说是好的建议,但在这种情况下不是很有帮助,因为你没有指出替代方案,并且 ABS 至少提供了一个断言脚本,而 Wooledge wiki (https://mywiki.wooledge.org/FindPage?action= fullsearch&advancedsearch=1&and_terms=assert&or_terms=¬_terms=&mtime=&categories=&language=&mimetype=) 和 Bash Hackers Wiki (https://wiki-dev.bash-hackers.org/start?do=search&id=assert) 都不包含任何关于断言的讨论根本不。 (3认同)
  • 请不要鼓励将ABS用作参考-通常,它没有得到充分维护,并养成了展示不良做法示例的习惯。Wooledge Wiki和bash-hackers Wiki(当然还有官方手册)是更好的资源。 (2认同)

Mar*_*ark 5

试试看:assert.sh

source "./assert.sh"

local expected actual
expected="Hello"
actual="World!"
assert_eq "$expected" "$actual" "not equivalent!"
# => x Hello == World :: not equivalent! 
Run Code Online (Sandbox Code Playgroud)


gee*_*aur 4

对于初学者来说,我会echo在 前面添加mv来验证是否正在创建正确的命令。(使用可能难以撤消更改的命令总是一个好主意。)

\n\n

一些可能有用的资源:

\n\n\n