我刚刚完成了我的第一个工作bash脚本(yay) - 它将数据提供给OS X上的GeekTools并显示一个任务列表,每次定期更新时会显示一个新的项目类别。
我写了函数getProject,在脚本中将它调用一次作为测试,然后写了一行实际发送信息。这是奇怪的部分 - 当我拿出函数调用时,我严格地作为测试 - 脚本停止工作!谁能告诉我为什么会这样,以及如何解决它?
另外 - 因为这是我的第一个剧本,如果有人愿意的话,我会欢迎提供更好的编码方法。谢谢!
更新:我删除的行是“getProject”它被添加来测试函数,当我删除它时,我得到了......没有,没有任何结果。
#!/bin/bash
function getProject
{
PATH=/usr/local/bin:$PATH
cd $TMPDIR
if [ ! $STRING ]; then
declare -ag STRING
declare -g STRLENGTH
STRING=($(task ssproject | sort -fbdiu | grep -iv project | grep -iv tasks))
STRLENGTH=$(task stats | awk '/Projects/ {print $2}')
STRLENGTH=$(($STRLENGTH-1));
fi
if [ ! -f ./projectcycle.txt ] || [ $(cat ./projectcycle.txt) -gt $STRLENGTH ] || [ $(cat ./projectcycle.txt) -lt 0 ]]; then
echo 0 > ./projectcycle.txt
fi
if [ ! $CYCLE ]; then
declare -g CYCLE
CYCLE=$(cat ./projectcycle.txt)
fi
if [[ $CYCLE -lt 0 || $CYCLE -gt $STRLENGTH ]]; then
CYCLE=0
fi
echo ${STRING[ $CYCLE ]}
CYCLE=$((CYCLE+1))
echo $CYCLE > ./projectcycle.txt
}
getProject # <-------REMOVING BROKE THE SCRIPT
task projectdisplay project:$(getProject) | grep -v task
答案 0 :(得分:0)
这有帮助吗?
当事情没有按计划进行时,你需要确定什么 确切地导致脚本失败。
Bash提供了广泛的调试功能。
最常见的是使用-x选项启动子shell,其中 将以调试模式运行整个脚本。
每个命令的跟踪及其参数都打印到标准 在扩展命令之后但在它们出现之前输出 执行。
bash -x script1.sh