Я хотел бы встроить текст коротких сценариев Python в сценарии удара, для использования в говорят, мой .bash_profile
. Что лучший способ состоит в том, чтобы пойти о выполнении такой вещи?
Решение, которое я имею до сих пор, состоит в том, чтобы назвать интерпретатор Python с -c
опция, и говорит интерпретатор exec
независимо от того, что это читает из stdin
. Оттуда, я могу создать простые инструменты как следующее, позволив мне тексту процесса для использования в моей интерактивной подсказке:
function pyexec() {
echo "$(/usr/bin/python -c 'import sys; exec sys.stdin.read()')"
}
function traildirs() {
pyexec <<END
trail=int('${1:-3}')
import os
home = os.path.abspath(os.environ['HOME'])
cwd = os.environ['PWD']
if cwd.startswith(home):
cwd = cwd.replace(home, '~', 1)
parts = cwd.split('/')
joined = os.path.join(*parts[-trail:])
if len(parts) <= trail and not joined.startswith('~'):
joined = '/'+joined
print joined
END
}
export PS1="\h [\$(traildirs 2)] % "
Этот подход пахнет немного забавным мне, хотя, и я задаюсь вопросом, каков альтернативы выполнению его этот путь мог бы быть.
Мои навыки сценариев удара являются довольно элементарными, таким образом, мне особенно интересно слышать, делаю ли я что-то глупое с точки зрения интерпретатора удара.
Обработать событие щелчка на карте Щелкните обработчик . Вот один из многих образцов кодов, которые можно найти в архивах списков рассылки OpenLayers:
map.events.register('click', map, handleMapClick);
function handleMapClick(e)
{
var lonlat = map.getLonLatFromViewPortPx(e.xy);
// use lonlat
// If you are using OpenStreetMap (etc) tiles and want to convert back
// to gps coords add the following line :-
// lonlat.transform( map.projection,map.displayProjection);
// Longitude = lonlat.lon
// Latitude = lonlat.lat
}
-121--2889102- Почему необходимо использовать -c
? Это работает для меня:
python << END
... code ...
END
не нуждаясь ни в чем лишнем.
-121--1062047- Интерпретатор python принимает -
в командной строке в качестве синонима stdin
, чтобы можно было заменить вызовы pyexec на:
python - <<END
См. ссылку на командную строку здесь .
Interesting... Я тоже хочу получить ответ сейчас ;-)
Он не спрашивает, как выполнить код на питоне в рамках бэш-скрипта, но на самом деле у него есть переменные окружения, заданные питоном.
Поместите это в бэш-скрипт и попробуйте заставить его сказать "это сработало".
export ASDF="it didn't work"
python <<END
import os
os.environ['ASDF'] = 'it worked'
END
echo $ASDF
Проблема в том, что питон выполняется в копии окружения. Любые изменения этого окружения не видны после выхода питона.
Если для этого есть решение, я бы тоже с удовольствием посмотрел.
Зачем вам нужно использовать -c
? Для меня это работает:
python << END
... code ...
END
--, не требуя ничего лишнего.