以下は、kdialogプログレスバーを使用する方法の例です。効果がある
dbusRef=`kdialog --progressbar "Press Cancel at Any time" 10`
qdbus $dbusRef showCancelButton true
until test "true" = `qdbus $dbusRef wasCancelled`; do
sleep 1
inc=$((`qdbus $dbusRef Get "" "value"` + 1))
qdbus $dbusRef Set "" "value" $inc;
done
qdbus $dbusRef close
ただし、メインスクリプトファイルが2番目のスクリプトファイルを呼び出すときにどのように機能するかはわかりません。 2番目のスクリプトで同じ進行状況バーを更新し続けたいと思います。
エラーは次のとおりです。
- qdbus 'value 53 path'設定は有効なパス名ではありません。
進行状況バーを更新する2番目のスクリプトファイルのコードは、最初のコードとまったく同じです。一般的に言えば、
qdbus $dbusRef Set "" value "$PROGRESS"
明らかに、いくつかの変数値は渡されません。しかし、私が見たチュートリアルの中で、これらの変数を説明するチュートリアルはありません。たとえば、何ですかvalue
?何ですか$dbusRef
?
つまり、最初のbashスクリプトファイルから呼び出された2番目のbashスクリプトファイルで同じプログレスバーをどのように更新しますか?
答え1
2つのスクリプトを投稿するのを忘れました。しかし、あなたの説明によれば、dbusRef
あるシェルスクリプトで変数を設定し、別のスクリプトからその変数にアクセスするようです。各シェルには独自の変数セットがあるため、これは機能しません。呼び出しスクリプトの変数を呼び出しスクリプトに渡す必要があります。
これを行う簡単な方法は、変数を環境変数に変換することです。export
これには組み込み関数を使用できます。発信者から:
export dbusRef="$(kdialog --progressbar "Press Cancel at Any time" 10)"
…
some_other_program_that_happens_to_also_be_a_shell_script
呼び出しスクリプトから:
PROGRESS='something or other'
qdbus "$dbusRef" Set "" value "$PROGRESS"
export
あるいは、を使用する代わりに、コマンドライン引数などの情報を渡すために必要な方法を使用できます。
dbusRef="$(kdialog --progressbar "Press Cancel at Any time" 10)"
…
some_other_program_that_happens_to_also_be_a_shell_script argument1 argument2 "$dbusRef" argument4
そして呼び出されたスクリプトから:
PROGRESS='something or other'
qdbus "$3" Set "" value "$PROGRESS"