为什么从我的 Ruby 脚本调用 mktemp 会显示权限被拒绝?

use*_*147 1 ruby permissions bash

我有以下 Ruby 代码:

cmd="
source= $(mktemp)
echo source
"
system("#{cmd}")
system("source= $(mktemp)")
Run Code Online (Sandbox Code Playgroud)

我希望代码执行“mktemp”命令并将临时文件名输出到变量“source”。但是,我收到的错误消息是:

sh: /tmp/tmp.EpXeLNkqjN: Permission denied

sh: /tmp/tmp.wVCqdqHSpp: Permission denied


------------------
(program exited with code: 0)
Press return to continue
Run Code Online (Sandbox Code Playgroud)

即使我以 root 身份运行该程序,错误也是一样的。

但是,当我仅运行 mktemp 命令时,没有问题。怎么了?

gni*_*urf 5

符号中不能有空格=。将您的代码替换为

cmd="
source=$(mktemp)
echo $source
"
system("#{cmd}")
system("source=$(mktemp)")
Run Code Online (Sandbox Code Playgroud)

注意:符号后不能有空格=

在符号后面留一个空格的问题=是,sh它将尝试执行由扩展给出的命令$(mktemp)(即命令/tmp/tmp.EpXeLNkqjN或类似的东西 - 不存在),并将变量source设置为空字符串。