即使我的退出状态为0
,我的脚本似乎也无法正常工作直到我使用
创建了一个函数makedrivetree ()
{
}
语法。
如果删除它并在while
和done
之间保持一致,则可以正常工作。
我将它保存在我的〜/ bin文件夹中作为makedrivetree
这是完整的功能:
#!/usr/bin/env bash
# a script to write the contents of a directory in tree form and save it to a .txt file
### CONSTANTS
DATE="$(date +%Y%m%d)"
### FUNCTIONS
makedrivetree ()
{
while [ "${*}" != "" ] ; do
#set $DRIVE as the first arugment sent to script
DRIVE="${1}"
#set $OUTPUT
OUTPUT="/Users/$USER/Desktop/$(basename "${DRIVE}")_contents_"${DATE}".txt"
#run tree
tree -I "*.dpx" --si --du -U -o "${OUTPUT}" "${DRIVE}"
#check $? for errors
if [ "$?" -eq "0" ] ; then
echo 'done. moving to next drive.'
else
echo 'error'
fi
shift
done
}
#call the function(s)
makedrivetree
echo 'makedrivetree exited with status' $?
exit
答案 0 :(得分:2)
您没有向该函数传递任何参数。查看函数
中的第一行代码while [ "${*}" != "" ]
你在那里做了什么测试是否有任何参数传递给函数。当你调用函数(makederivetree)时,你没有传递任何参数。总结一切,当你调用你的函数时,while循环从不运行,因为你指定的条件。
答案 1 :(得分:0)
用makedrivetree "$@"
调用函数解决了这个问题。
(评论中的优秀提示/解释/答案)