繁体   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