Bash Prodigy 中的变量替换
Bash variable substitution in Prodigy
我想导出 Prodigy tagging session through the command db-out. Prodigy is installed in a 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
文件已正确生成,正如预期和之前解释的那样。为什么?
补充说明/更新:
在关注 this post (which was kindly suggested by Gordon Davidson 并强烈建议对其进行修订后),我设法解决了原来的问题。更正后的代码如下所示:
DB_NAME="test1"
sudo runuser -l super_user -c "python3 -m prodigy db-out $DB_NAME > ./$DB_NAME.jsonl"
为了清楚起见,它们是:
- 单引号被双引号代替。
- 内部双引号被丢弃。
之后,脚本按预期运行。如果我理解 this post 正确,可能会有一些其他有效的答案;不过这个目前有效。
谢谢。
我想导出 Prodigy tagging session through the command db-out. Prodigy is installed in a 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
文件已正确生成,正如预期和之前解释的那样。为什么?
补充说明/更新:
在关注 this post (which was kindly suggested by Gordon Davidson 并强烈建议对其进行修订后),我设法解决了原来的问题。更正后的代码如下所示:
DB_NAME="test1"
sudo runuser -l super_user -c "python3 -m prodigy db-out $DB_NAME > ./$DB_NAME.jsonl"
为了清楚起见,它们是:
- 单引号被双引号代替。
- 内部双引号被丢弃。
之后,脚本按预期运行。如果我理解 this post 正确,可能会有一些其他有效的答案;不过这个目前有效。
谢谢。