2013-08-28 2 views
-1

Я хочу выполнить код сценария, такой как python, из стандартного ввода bash, потому что я не хочу сначала писать сценарий для файла. И как это сделать? Если я хочу, чтобы запустить код питона из Баша стандартного ввода, как:Как выполнить код сценария из bash shell stdin?

#!/usr/bin/env python 

print 'hello world' 

$ кошки mycode.py | bash -s

Но это не сработает. Ошибка показала:

Warning: unknown mime-type for "hello world" -- using "application/octet-stream" 

Ошибки: нет такого файла «привет мир»

+0

да, я исправить название, спасибо. – CatWin

+0

Почему? Что вы пытаетесь достичь? – CadentOrange

+0

На самом деле, я хочу запустить скриптовый код, например, python, переадресовать коды на стандартный вход bash. – CatWin

ответ

4

Но это не work.An ошибки показала: Предупреждения: неизвестный типа пантомимы для «привета мира» - используя «application/octet-stream» Ошибка: нет такого файла «hello world»

Курс, bash не знает команду hello world, и система предложит установить что-то. Ниже может работать

python -c 'print "ls -l"' | bash 
+0

python -c, поддержка отступа? – CatWin

+1

Да, но это плохая идея. Это хорошо для очень простых и коротких сценариев writeonly. Если скрипт ypur не является тривиальным, используйте 'python myfile.py | bash'. В этом случае, если bash получил исходный код, он будет работать хорошо. –

1

Как вариант вы можете сделать подобное этому сценарию:

$ cat test.py 
#!/usr/bin/python 

import sys 

if sys.version_info[0] == 2: 
    sys.stdout.write("ls -l") 

$ python test.py | bash 
итого 4 
-rw-rw-r-- 1 miha miha 91 авг. 28 12:21 test.py 
$ chmod +x test.py 
$ ./test.py | bash 
итого 4 
-rwxrwxr-x 1 miha miha 91 авг. 28 12:21 test.py 
Смежные вопросы