2013-03-04 2 views
0

Эта команда работает должным образом.bash: если оператор работает в одну сторону, но не с добавленным процессом

if [[ "$fsb" > "19" || "$fsb" < "06" ]]; then 
    xterm -name Xtermc 
else 
    xterm -name Xtermd 
fi 

Но это не так, ни Xterm не производится, не говоря уже о запуске скрипта (x0 или x100) внутри него.

if [[ "$fsb" > "19" || "$fsb" < "06" ]]; then 
    xterm -name Xtermc -e x0 
else 
    xterm -name Xtermd -e x100 
fi 

Может ли кто-нибудь объяснить, почему?

+0

xterm поддерживает параметр '-e'? –

ответ

1

Это, скорее всего, потому, что x0 и x100 не могут быть найдены или немедленно выйти. Пробег

xterm -name Xtermc -e 'x0; read' 

для просмотра любых сообщений об ошибках. Если команда работает нормально, но заканчивается и выходит сразу, вы можете получить приглашение потом с

xterm -name Xtermc -e 'x0; bash' 
+0

Поведение, как вы и предполагали, «невозможно найти», но оба сценария существуют в моем .bashrc и выполняются нормально, если вызывается напрямую. – user985675

+2

'-e' требует действительного исполняемого файла, а не функции оболочки, что и есть' x0 'и' x100' появляются, когда вы говорите, что они «существуют в [вашем]' .bashrc' ». – chepner

+0

Ах, спасибо, тайна решена – user985675