簡體   English   中英

Prodigy 中的 Bash 變量替換

[英]Bash variable substitution in Prodigy

我想通過命令db-out導出Prodigy標記會話的結果。 Prodigy 安裝在Google Compute Engine VM 中,但我不是它的所有者,因此,我正在嘗試的內容如下所示:

# Assume `test1` exists
DB_NAME="test1"
#  `super_user` is Prodigy owner's home directory.
sudo runuser -l super_user -c 'python3 -m prodigy db-out "$DB_NAME" > ./"$DB_NAME".jsonl'

前面的命令應該生成一個test1.jsonl文件,該文件應該在super_user主目錄中找到; 但是,不會生成test1.jsonl 順便說一句,運行這些行時,不會顯示警告或錯誤。

不過,當我直接運行以下命令時:

sudo runuser -l super_user -c 'python3 -m prodigy db-out test1 > ./test1.jsonl'

test1.jsonl文件按照預期和前面的解釋正確生成。 為什么?

附加說明/更新:

  1. 無需解釋runuserdb-out命令在做什么。 我認為該錯誤與我這邊的(可能?)錯誤的變量替換更相關,我現在沒有看到。

在解決了我對這篇文章的關注(這是由Gordon Davidson提出的,強烈建議對其進行修訂),我設法解決了我原來的問題。 更正后的代碼如下所示:

DB_NAME="test1"
sudo runuser -l super_user -c "python3 -m prodigy db-out $DB_NAME > ./$DB_NAME.jsonl"

只是為了明確更改,它們是:

  1. 單引號被雙引號代替。
  2. 內部雙引號被丟棄。

之后,腳本按預期工作。 如果我正確理解這篇文章,可能還有其他一些有效的答案; 但是這個現在有效。

謝謝你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM