У меня есть код 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'
Как передать входное значение в сценарий оболочки. Пожалуйста, помогите мне решить эту проблему. Большое спасибо!