es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Script de shell para pasar argumentos al archivo de entrada.

Tengo un script de shell que recibe una entrada del usuario y pasa esa entrada al archivo que estoy utilizando dentro de mi script de shell.

Script de shell myscript.sh

kubectl create -f de_pod.yaml

Aquí está 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

Así es como se ejecuta el script

sh myscript.sh my1stinput my2ndinput

Si observa de_pod.yaml en la línea command: ["python", "/script.py", "$Input1", "$input2"], aquí estoy utilizando la entrada del usuario después de ejecutar mi myscript.sh. Pero tanto $input1 como $input2 no están tomando mi valor.

¿Qué estoy haciendo mal?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema radica en la sensibilidad a las mayúsculas y minúsculas de los nombres de las variables en el script de shell. En el archivo YAML, las variables se nombran como “$Input1” y “$input2”, mientras que en el script de shell, se nombran como “my1stinput” y “my2ndinput”.

    Para solucionar esto, debes modificar el script para pasar los nombres de variables correctos al archivo YAML.

    El script de shell actualizado debería verse así:

    #!/bin/bash
    
    kubectl create -f de_pod.yaml --env INPUT1=$1 --env INPUT2=$2
    

    Y el archivo YAML actualizado debería verse así:

    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
    

    Aquí, estamos pasando los valores de “my1stinput” y “my2ndinput” al archivo YAML como variables de entorno “INPUT1” e “INPUT2”. También estamos utilizando los nombres de variables correctos en el archivo YAML, encerrándolos entre llaves “{}” y haciéndolos minúsculos.

    Realizando estos cambios, tu script debería funcionar correctamente y pasar la entrada del usuario al archivo YAML.

Comments are closed.