Итак, я знаю, что существует множество ответов на переполнение стека для игнорирования ошибок в bash сценарии. Похоже, что ни один из них не работает для исходной команды.
Я попробовал проверенный и верный source ../bin/activate || true
Я пытался установить set -e
перед выполнением команды
Я пытался source ../bin/activate 2>&1 /dev/null
Я пытался установить set +e
перед запуском команды. Это тоже не сработало.
, но при каждом запуске этого кода я получаю
run.01: строка 12: ../bin/activate: такого файла нет или каталог
Контекст этой проблемы заключается в том, что я создаю простой сценарий bash, который выполняет некоторый код python. Пользователь получает инструкции о том, как создать определенную виртуальную среду c, и эта строка автоматически активирует ее, если он настроит ее правильно, в противном случае следует игнорировать сбой при запуске и продолжение выполнения команд в любой среде, которая активирована в данный момент.
# Try virtual environment
source ../bin/activate || true
## Run.
code="../src-01/driver.v01.py"
## --------------------
graphInputFile="undirected_graph_01.inp"
graphType="undirected"
srcColId="0"
desColId="1"
degreeFind="2"
outFile="count.undirected.num.nodes.out"
python $code -inpGraphFile $graphInputFile -graphFormat $graphType -colSrcId $srcColId -colDesId $desColId -degreeFind $degreeFind -output_file $outFile
Команда python должна выполняться независимо от того, успешно выполнена команда source ../bin/activate
или нет. Я немного растерялся из-за того, что ни одно из этих решений не работает, и в настоящее время я предполагаю, что source
может сделать что-то отличное от обычной команды, учитывая обстоятельства.
РЕДАКТИРОВАТЬ:
Я добавил shebang #!/bin/bash -x
в свой файл по запросу, но это ничего не сделало.
I Это мой точный вывод на терминал при запуске этого скрипта.
Lucas-Macbook:test-01 lucasmachi$ sh run.01
run.01: line 14: ../bin/activate: No such file or directory
Lucas-Macbook:test-01 lucasmachi$
Где run.01
- это имя сценария bash.
Также поясним, что показанный мной код не подвергается цензуре. это весь сценарий (за исключением теперь с упомянутым Шебангом наверху.)