Передача Python переменной в качестве аргумента сценарию оболочки - PullRequest
0 голосов
/ 10 июля 2020

У меня есть код python, в котором мне нужно запустить сценарий оболочки, передав аргументы. Ниже мой код

#!/usr/bin/env python3
import subprocess
import os
import sys

filename=sys.argv[1]
subprocess.call(['bash','./shell.sh',filename])
print("Successfully completed")

Здесь я пытаюсь получить ввод в качестве аргумента при запуске ./file.py (filename). Но если я попытаюсь передать это в качестве аргумента сценарию оболочки, я не смогу исключить programam.

Также я пробовал код ниже

#!/usr/bin/env python3
import subprocess
import shlex
import sys

filename=sys.argv[1]

subprocess.call(shlex.split('./shell2.sh filename'))

Для приведенного выше кода я получаю такую ​​ошибку:

awk: fatal: cannot open file `filename' for reading (No such file or directory)
                                                  

Мой код сценария:

file=$1
awk '{
  if($0 ~ /LogType/){
    if(hold ~ /LogType:stderr/){
      print hold;
    }
    hold=$0
  }else{
    if($0 ~ /ERROR/ || $0 ~/WARN/){hold=hold "\n" $0 ": line " NR}else{hold=hold "\n" $0}
  }
}END{
  if(hold ~ /LogType:stderr/){
    print hold
  }
}' $file | sed -n -e 's/^.*LogType:\(stderr\)$/\1/p' \
                 -e 's/^.*Log Upload Time :\(.*\)/\1/p' \
                 -e 's/^.*LogLength:\(.*\)$/\1/p'       \
                 -e 's/^.*\(ERROR\|WARN\).*$/\0/p'

Как передать входное значение в сценарий оболочки. Пожалуйста, помогите мне решить эту проблему. Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...