私はちょうど最初の作業用bashスクリプト(yay)を書き終えました。OS XのGeekToolsにデータを送り、毎回新しいプロジェクトカテゴリを定期的に更新するタスクリストを表示します。Bashスクリプトミステリーは、私がここで何をしたのですか?
私は関数として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
あなたはあなたの質問を更新してもらえますか? –
確認するには、プロセス全体を駆動するのは最後のilneです。つまり、 'task projectdisplay project:$(getProject)| grep -v task'そして、組み込み呼び出し '... $(getProject)...'を介して関数が動作することを期待していますか? (それは私には正しいようです)幸運。 – shellter