2016-10-01 4 views
0

Я пытаюсь запустить скрипт, который, в свою очередь, должен выполнять базовый скрипт python. Это сценарий оболочки:Сценарий оболочки, не выполняющий файл python

#!usr/bin/bash 
mv ~/Desktop/source/movable.py ~/Desktop/dest 
cd ~/Desktop/dest 
pwd 
ls -lah 
chmod +x movable.py 
python movable.py 
echo "Just ran a python file from a shell script" 

Это питон скрипт:

#!usr/bin/python 
import os 
print("movable transfered to dest") 
os.system("pwd") 
os.system("mv ~/Desktop/dest/movable.py ~/Desktop/source") 
print("movable transfered to dest") 
os.system("cd ~/Desktop/source") 
os.system("pwd") 

Q1. Сценарий оболочки не выполняет файл python. Что я делаю не так? Q2. Нужно ли писать первую строку #!usr/bin/python в сценарии python? Спасибо.

+0

Первая строка не нужна, но рекомендуется только, и в этом вы должны быть осторожны. –

+0

+ x вещь также не нужна, учитывая то, как вы называете сценарий (я думаю) –

+0

Также будьте осторожны: команда 'cd', которую вы пишете там, не будет иметь эффекта (в скрипте Python) –

ответ

0

Вы пропускаете '/' в хижину линии:

#!usr/bin/python 

должен быть

#!/usr/bin/python 

Другая вещь, которую я заметил, вы вызываете кд в os.system. Поскольку эта команда будет выполняться в подклассу, она не изменит текущий каталог процесса вызова скрипта.

+0

Он работает сам по себе, видимо, недостающая коса не пропустила: p. Я вижу, что текущий каталог не изменяется. Как я могу это сделать? Кроме того, я пытался это сделать из файла python: 'os.system (" pid = $$ ")' 'os.system (" echo 'Это pid = $ pid' ")' Но это не работает. Можете ли вы рассказать мне, как я могу выполнить два связанных оператора, подобных приведенным выше. – ashwinx

Смежные вопросы