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番目のスクリプトから同じプログレスバーを更新し続けたいと思います。
エラーは次のとおりです。
プログレスバーを更新するコードは、2番目のスクリプトファイルでも最初のスクリプトファイルとまったく同じです。一般的に、それはこれです:
qdbus $dbusRef Set "" value "$PROGRESS"
明らかに、一部の変数値は渡されていません。しかし、私が見たチュートリアルのどれも変数を説明していません。たとえば、value
とは何ですか?とは $dbusRef
?
要するに、最初に呼び出された2番目のbashスクリプトファイルから同じプログレスバーを更新するにはどうすればよいですか?
両方のスクリプトを投稿するのを忘れました。しかし、説明を考えると、あるシェルスクリプトで変数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"