linux 脚本 获取当前目录,Linux下获取脚本当前工作目录的一点感触
背景:把scp-file.sh腳本相同路徑下的所有文件傳到另外一個服務器上。
一般把scp * test@192.169.55.66:/home/放到scp-file.sh腳本中,這樣就能完成這個功能,先假設這個是腳本開發人員A完成的。
功能測試也是OK的,但這個腳本是有隱患的,不知道你有沒有發現?
當該腳本對外提供服務,被開發人員B調用了一把,這個看運氣了,如果和scp-file.sh在同一路徑下調用,沒得問題。如果cd切換到scp-file.sh腳本所在路徑,也不會有此問題。
但當你sh ./test/scp-file.sh執行時,這個時候就會出現問題,會把當前路徑下的文件而不是/test下的文件傳到另外一個服務器上。這是為什么呢?
腳本測試下看看就知道了,scp-test.sh中添加pwd和ls -l兩行看看就知道了。
原來的需求是什么呢?原來的需求是將/test下的所有文件傳到另外一個服務器上。
scp-test.sh中頂行再添加一行cd $(dirname $0),再看下pwd和ls -l執行結果。
添加cd $(dirname $0)前后有什么差別嘛?
這下知道這個腳本的缺陷了吧?修改方案
原則上:一個腳本對外提供的能力或者服務,應該考慮健壯性,不管使用者怎么調用。這樣看scp-file.sh腳本修改,最佳方案。這個腳本有可能被好幾個人調用,只要一處修改即可。
另外方案:scp-file.sh腳本給出二次開發說明,限制調用者調用方式,比如cd切換到scp-file.sh腳本所在路徑。復盤
復述下開發過程和測試過程,開發人員A先開發,可能和開發人員B同一項目或不同項目,開發人員A對應測試人員a,測試完說功能正常,然后發布給開發人員B,并沒有二次開發手冊,開發人員B以為調用一把,還真這么寫代碼了,開發人員B說自測OK,開發人員B對應的測試人員b測試就遇到了問題。
這一過程中,開發人員A的腳步不夠健壯,但一般不會暴露問題,沒有二次開發手冊,沒考慮使用者如何調用。
開發人員B說我自測OK啊,怎么做到版本中就有問題呢?是誰改過代碼嘛?為啥我自測沒發現問題?這些不得而知,只能讓開發人員B自己描述下測試過程,說下自己對于此功能的斷言(期望),以及自測時測試腳本是怎么調用的?
這一故障應該歸屬于誰呢?看開發人員B的復盤過程了。話說回來,該故障應該誰來修改呢?這個可以討論下怎么實施?雖然有最優方案但不見得人家修改。
總結
以上是生活随笔為你收集整理的linux 脚本 获取当前目录,Linux下获取脚本当前工作目录的一点感触的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 刮舌苔好不好
 - 下一篇: linux查看端口访问用户,如何查找连接