[英]shell script to pass argument to input file
我有 shell 脚本,它从用户那里获取一些输入并将该输入传递给我在 shell 脚本中使用的文件
Shell 脚本myscript.sh
kubectl create -f de_pod.yaml
这是de_pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: test
spec:
restartPolicy: Never
containers:
- name: run-esp
image: myimage:1
command: ["python", "/script.py", "$Input1", "$input2"]
imagePullPolicy: Always
stdin: true
tty: true
这就是我运行脚本的方式
sh myscript.sh my1stinput my2ndinput
如果您查看de_pod.yaml
在 line command: ["python", "/script.py", "$Input1", "$input2"]
这里我在运行myscript.sh
后使用用户输入。 但$input1
和$input2
都没有填充我的值
我做错了什么?
不是最好的解决方案,但如果您想以这种方式使用 pod 部署,那么它应该可以工作。 生成不同参数的yaml文件,通常使用Helm图表
apiVersion: v1
kind: Pod
metadata:
name: test
spec:
restartPolicy: Never
containers:
- name: run-esp
image: myimage:1
command: ["python", "/script.py", "input1", "input2"]
imagePullPolicy: Always
stdin: true
tty: true
kubectl create -f de_pod.yaml | sed "s/input1/$1/g" | sed "s/input2/$2/g"
我怀疑你想要的是这样的。
myscript.sh :
#!/bin/bash
[[ "${#}" -ne 2 ]] && {
echo "Usage: ${0} <something_something> <something_else>" 1>&2;
exit 1;
};
template="/path/to/de_pod.yaml";
my1stinput=""; printf -v my1stinput '%q' "${1}";
my2ndinput=""; printf -v my2ndinput '%q' "${2}";
sed -e "s/\$Input1/${my1stinput}/g" -e "s/\$Input2/${my2ndinput}/g" "${template}" | kubectl create -f - ;
如果 2 arguments 中的值是复数,那么应该额外考虑确保它们在sed
模式中正确转义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.