有人可以解釋如何測試bash shell腳本嗎?測試bash shell腳本
例如我有與此代碼中有一個sh文件...
#!/bin/sh
for file in *.txt; do
mv "$file" "`basename $file .txt`.doc"
done
如何爲它編寫一個測試?就像在Java中一樣,您已經進行了單元測試,您可以在其中編寫像assertEquals這樣的代碼來測試代碼,以獲得所需的輸出。
有人可以解釋如何測試bash shell腳本嗎?測試bash shell腳本
例如我有與此代碼中有一個sh文件...
#!/bin/sh
for file in *.txt; do
mv "$file" "`basename $file .txt`.doc"
done
如何爲它編寫一個測試?就像在Java中一樣,您已經進行了單元測試,您可以在其中編寫像assertEquals這樣的代碼來測試代碼,以獲得所需的輸出。
我想在mv
前加一個echo
來驗證是否創建了正確的命令。 (總是一個好主意,用的更可能很難撤消更改命令。)
一些可能有用的資源:
好吧, 謝謝。但我試圖創建一個測試整個代碼的.sh文件。 – 2011-03-21 19:51:32
@Mr牙齒:在上面添加了一些鏈接。也就是說,shell腳本有點難以有效地進行單元測試,因爲幾乎所有內容都歸結爲調用外部命令。測試這些命令幾乎更加合理和有用,並且通過使用'echo'存儲外部修改來測試腳本本身。 – geekosaur 2011-03-21 20:03:38
你可以在Bash中斷言。從高級Bash腳本編程指南看看這個:
請不要鼓勵ABS作爲參考 - 通常情況下,它是不受支持的,並養成了展示不良實例的習慣。 Wooledge維基和bash黑客wiki(當然還有官方手冊)都是更好的資源。 – 2017-05-20 20:07:48
#!/bin/sh
for file in *.txt; do
echo mv "$file" "`basename $file .txt`.doc"
done
嘗試了這一點:assert.sh
source "./assert.sh"
local expected actual
expected="Hello"
actual="World!"
assert_eq "$expected" "$actual" "not equivalent!"
# => x Hello == World :: not equivalent!
檢查這些 - > http://stackoverflow.com/questions/1315624/bash和測試驅動開發,http://stackoverflow.com/questions/1339416/testing-bash-scripts – Chaitanya 2011-03-21 19:49:00
單元測試bash腳本。尼斯。 :) – 2011-03-21 20:07:30
這是更好的:'mv「$ file」「$(basename」$ file「.txt).doc」'或'mv「$ file」「$ {file%* .txt} .doc」 – 2011-03-22 01:10:02