corev1.PodExecOptions.Command
принимает значение типа []string
.
req.VersionedParams(&_v1.PodExecOptions{
Stdin: false,
Stdout: true,
Stderr: true,
TTY: false,
Container: containerName,
Command: cmds,
}, parameterCodec)
, где cmds
может быть:
cmds := []string{
"sh",
"-c",
"echo $HOME; ls -l && echo hello",
}
Выход:
/root
total 68
drwxr-xr-x 2 root root 4096 Feb 24 00:00 bin
drwxr-xr-x 2 root root 4096 Feb 1 17:09 boot
drwxr-xr-x 2 root root 4096 Feb 24 00:00 mnt
drwxr-xr-x 2 root root 4096 Feb 24 00:00 opt
dr-xr-xr-x 396 root root 0 Mar 19 11:47 proc
drwx------ 2 root root 4096 Feb 24 00:00 root
.
.
hello
Объяснение: Ответ Тима
command: ["/bin/sh","-c"]
args: ["command one; command two && command three"]
Команда ["/bin/sh", "-c"]
говорит «запустить оболочку и выполнить следующие инструкции», Аргументы затем передаются в виде команд в оболочку. В сценариях оболочки semicolon
разделяет команды, а &&
условно запускает следующую команду, если первая удалась. В приведенном выше примере он всегда запускает команду one
, за которой следует команда two
, и запускает команду three
, только если команда two
выполнена успешно.
NB: Для bash, это будет похоже на что-то вроде ниже:
cmds := []string{
"bash",
"-c",
`export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}
mysql -h localhost -nsLNE -e "select 1;" 2>/dev/null | grep -v "*"`,
},