我想使用
oc exec
在我的 pod 中执行 cat
。在这个 cat
命令中,我需要扩展一些变量。
cat /opt/amq/data/split-$index/running
所以,我尝试这个:
oc exec -i $pod -- '"/bin/bash" -s <<EOF cat /opt/amq/data/split-$index/running EOF'
但我无法让它工作。
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:235: starting container process caused "exec: \"\\\"/bin/bash\\\" -s <<-EOF cat /opt/amq/data/split-$index/running EOF\": stat \"/bin/bash\" -s <<-EOF cat /opt/amq/data/split-$index/running EOF: no such file or directory"
我可以将 cat 和 bash 放在单独的行中,但错误是相同的:
$index
未扩展。
oc exec -i $pod -- '"/bin/bash" -c <<EOF
cat /opt/amq/data/split-$index/running
EOF'
错误:
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:235: starting container process caused "exec: \"\\\"/bin/bash\\\" -c <<EOF\\n cat /opt/amq/data/split-$index/running\\n EOF\": stat \"/bin/bash\" -c <<EOF\n cat /opt/amq/data/split-$index/running\n EOF: no such file or directory"
找到一种不使用heredoc的方法。
oc rsh
可以直接运行命令并返回结果:
oc rsh pod_name cat /opt/data/...
这就是我所需要的。那我就不需要
oc exec
。
并且,查看错误消息,它显示:
stat \"/bin/bash\" -s <<-EOF cat /opt/amq/data/split-$index/running EOF: no such file or directory
注意
stat
,它似乎正在寻找文件。
你可以尝试引用EOF:
oc exec -i $pod -- /bin/bash -s <<'EOF'
cat /opt/amq/data/split-$index/running
EOF