Я хотел бы создать скрипт bash, который запускает некоторое количество скриптов python в строке на основе аргументов, заданных в терминале (порядок, в котором они выполняются, не имеет значения).
Что-то вроде:
kwargs = kwarg1 kwarg2 kwarg3
if kwarg1: python script1.py
if kwarg2: python name2000.py
if kwarg3: python program30.py
Но с возможностью принимать любое количество ключевых слов до тех пор, пока они соответствуют сценарию.
Как это будет сделано?
Там вы можете сделать много, чтобы добавить к этому, но вот простейший из того, что вы просите:
#!/bin/bash
for script in $*; do
python $script.py
done
Поместите это в новый файл, например "run_python.bash", и сделайте его исполняемым (chmod a+w run_python.bash
).
Затем вы запустите его: run_python.bash one two three
, и он выполнит one.py, затем two.py, затем three.py.
Если вы хотите использовать структуру if
в цикле for
(т.е. Если ваши ключевые слова не соответствуют имени сценария), простая версия начинается следующим образом:
#!/bin/bash
for script in $*; do
if [ $script == 'kwarg1' ]; then
python script1.py
fi
if [ $script == 'kwarg2' ]; then
python name2000.py
fi
if [ $script == 'kwarg3' ]; then
python program30.py
fi
done
Это выполнит все, что вы скажете, на основе порядка ключевых слов, которые вы вводите в командной строке.
ps Это не имеет ничего общего с python. Сценарий работает одинаково, ссылаетесь ли вы на python, или ls
, или на что-нибудь еще, что вы можете запустить в bash.
вам нужен сценарий оболочки.
script.sh:
#!/bin/bash
if [ "$1" == "kwarg1" ]
then
python script1.py
elif [ "$1" == "kwarg2" ]
then
python name2000.py
fi
chmod +x script.sh
./script.sh kwarg1