2015-04-23 2 views
2

Я пытаюсь сделать что-то очень просто: дайте мне возможность выбрать, что нужно запускать при загрузке. Это на малине Pi, поэтому иногда это будет безголовый, иногда это не будет. Я подумал, что простой подход состоял бы в том, чтобы запустить небольшой скрипт при загрузке (даже не знаю, будет ли это работать - еще не дошло), который позволяет мне размять клавиатуру и запустить графический интерфейс или просто тайм-аут и запустить скрипт python. Но да, я не справляюсь с этой простой задачей. Оператор if всегда оценивает true, независимо от того, что я пытаюсь, и я пробовал много, много вещей. Вот итерация I хочу ...скрипт bash для проверки ввода пользователя с помощью команды чтения

Если я дам ему время ожидания, возвращаемое значение команды чтения должно быть больше 128. Если я нажму что-то, возвращаемое значение должно быть равно нулю. Итак ...

#!/bin/bash 

# this gives the user the chance to startx or leave it alone and let camera.py run 
# we will give the user 5 seconds to make a choice 

/bin/echo "Hit any key to startx, otherwise I will start camera.py." 

if [[ "$(read -t 5 -n 1)" -eq 0 ]]; then 
    /bin/echo "You want to startx!" 
else 
    /bin/echo "You want to start the python script!" 
fi 

В результате получается, что он всегда оценивается как истинный. Что я делаю не так?

ответ

1

Заменить:

if [[ "$(read -t 5 -n 1)" -eq 0 ]]; then 

С:

if read -t 5 -n 1; then 

При вводе символа, read возвращается и код выхода нуля (истина). Если read достигает конца файла или время истекает, он возвращает код выхода больше нуля (false). if отвечает на коды выхода. Нет необходимости в каких-либо тестах ([[).

+0

О, боже мой, спасибо! Я должен подождать 8 минут, прежде чем я смогу попасть на галочку. – noobiestofjavanoobs

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