Bash
當欄在另一個腳本中初始化時,如何使用 Bash 腳本中的 kdialog 進度條?
這是一個如何使用 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
但是,當主腳本文件呼叫第二個腳本文件時,我不知道如何使它工作。我想從第二個腳本繼續更新相同的進度條。
錯誤是:
- qdbus Set ’’ value 53 Path ’’ 不是有效的路徑名。
第二個腳本文件中更新進度條的程式碼與第一個完全相同。一般來說,它是這樣的:
qdbus $dbusRef Set "" value "$PROGRESS"
顯然,一些變數值沒有被傳遞。但是我見過的教程都沒有解釋這些變數。例如,什麼是
value
?是什麼$dbusRef
?簡而言之,如何從第一個呼叫的第二個 bash 腳本文件更新相同的進度條?
您忘記發布兩個腳本。但是根據您的描述,您似乎是
dbusRef
在一個 shell 腳本中設置變數,並在另一個腳本中訪問它。這不起作用,因為每個 shell 都有自己的一組變數。您需要將變數從呼叫腳本傳遞給被呼叫腳本。一種簡單的方法是將變數轉換為環境變數。您可以使用
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"