我寫了一個腳本mbratch的幫助。查找shell腳本錯誤
我運行如下;
./scriptname folder1
但是,我看到既沒有錯誤也沒有結果,我也不確定有什麼問題。
SH -x ./scriptname文件夾1
+ MAIN
+ check_directories
+ [ -d ]
我寫了一個腳本mbratch的幫助。查找shell腳本錯誤
我運行如下;
./scriptname folder1
但是,我看到既沒有錯誤也沒有結果,我也不確定有什麼問題。
SH -x ./scriptname文件夾1
+ MAIN
+ check_directories
+ [ -d ]
這對我工作得很好:
注:更新,以支持額外的選項。
opt="$1"
folder1="$2"
folder2="$3"
case "$opt" in
-d)
if [ -d "${folder1}" ] && [ -d "${folder2}" ] ; then
for i in "${folder1}/*" ; do
echo "test <$i>"
if [ -f "${folder2}/${i##*/}" ] ; then
echo "<${i##*/}>"
else
echo "! <${i##*/}>"
fi
done
fi
;;
# Example option
-h)
# Print help and exit.
;;
# Default case
*)
echo "Unknown option '$opt'" >&2
exit 1
;;
esac
嘗試用$HOME/
更換~/
,並確保在使用前設置folder1
和folder2
。還要注意,如果您的目錄或文件名稱包含空格,這將會中斷。在這種情況下,請使用find
;有關詳細信息,請檢查find man page。
爲什麼你需要參數?它完成了什麼? –
因此,將$ 1和$ 2改爲$ 2和$ 3。如果你想要看起來,你將不得不像[getopts](http://stackoverflow.com/a/7680682/1681480) – beroe
更新,以顯示一個非常簡單的方法來支持更多的選項。如果你需要更復雜的東西,建議使用'getopts'作爲beroe。 –
是您的腳本的全部?變量$folder1
從不在任何地方定義。默認情況下,程序將採用前兩個文本塊作爲$1
和$2
,因此請改用這些變量。
把一些echo
語句放在那裏看看哪些變量具有什麼值。
你已經有for
循環了,所以就去做吧。但是,您可能必須將要獲取文件列表的部分放在$()
以內,才能將其分配給變量,然後然後循環。
快速搜索「在bash中循環瀏覽文件」,您會發現for循環的一個很好的模板。
你在你的家裏嗎?以'〜/'爲前綴_every_的'$ {folderN}'實例,或者爲none,而不是_some_。 – Wrikken
如果'$ folder1'或'$ folder2'都不是實際的目錄,那麼這個腳本將不會執行任何操作。是這樣嗎? – SethMMorton
無論你是否在達到甚至是條件?在調試時習慣打印日誌消息。你的初始條件和循環中的路徑不匹配。 「〜/' – jkshah