Попробуйте ctrl + Shift + V для вставки текста (который скопирован из внешних источников) в gnome-terminal.
Вот один из способов сделать это, используя опцию -t timeout bash read builtin:
#!/bin/bash
while :
do
read -t10 -p "Do you want to un-Mount the External Drives? (Y/N): "
if [ $? -gt 128 ]; then
echo "timed out waiting for user response"
break
fi
case $REPLY in
[yY]*)
echo "do it"
break
;;
[nN]*)
echo "don't do it"
break
;;
*) echo "Please enter Y or N"
;;
esac
done
См. help read из приглашения bash или man bash.
Вот один из способов сделать это, используя опцию -t timeout bash read builtin:
#!/bin/bash
while :
do
read -t10 -p "Do you want to un-Mount the External Drives? (Y/N): "
if [ $? -gt 128 ]; then
echo "timed out waiting for user response"
break
fi
case $REPLY in
[yY]*)
echo "do it"
break
;;
[nN]*)
echo "don't do it"
break
;;
*) echo "Please enter Y or N"
;;
esac
done
См. help read из приглашения bash или man bash.
Вот один из способов сделать это, используя опцию -t timeout bash read builtin:
#!/bin/bash
while :
do
read -t10 -p "Do you want to un-Mount the External Drives? (Y/N): "
if [ $? -gt 128 ]; then
echo "timed out waiting for user response"
break
fi
case $REPLY in
[yY]*)
echo "do it"
break
;;
[nN]*)
echo "don't do it"
break
;;
*) echo "Please enter Y or N"
;;
esac
done
См. help read из приглашения bash или man bash.
Вот еще один способ сделать это:
#!/bin/bash
printf "%s\n" "Do you want to un-Mount the External Drives?"
timeout --foreground 10 bash -c '
select sel in "yes" "no"
do
echo "$REPLY"
break
done' | while read -r answer; do
echo ">>Got from user: $answer"
case "$answer" in
"yes") echo "Unmounting stuff" ;;
esac
done
Ключевые моменты:
timeout требует действительного процесса, а не команды оболочки. Здесь мы создаем оболочку bash как отдельный процесс и позволяем ему выполнять работу по вождению select. printf используется вне timeout, чтобы избежать отправки его текста через канал while read -r answer; do . . .done, будет работать тогда и только тогда, когда он получил что-то через канал. Таким образом, если предыдущий bash процесс истечет, он не будет работать - есть действие по умолчанию, которое вы ничего не делаете. если цикл while получил что-то через канал, он проверяет, является ли это ответом yes, иначе - он ничего не сделаетВот еще один способ сделать это:
#!/bin/bash
printf "%s\n" "Do you want to un-Mount the External Drives?"
timeout --foreground 10 bash -c '
select sel in "yes" "no"
do
echo "$REPLY"
break
done' | while read -r answer; do
echo ">>Got from user: $answer"
case "$answer" in
"yes") echo "Unmounting stuff" ;;
esac
done
Ключевые моменты:
timeout требует действительного процесса, а не команды оболочки. Здесь мы создаем оболочку bash как отдельный процесс и позволяем ему выполнять работу по вождению select. printf используется вне timeout, чтобы избежать отправки его текста через канал while read -r answer; do . . .done, будет работать тогда и только тогда, когда он получил что-то через канал. Таким образом, если предыдущий bash процесс истечет, он не будет работать - есть действие по умолчанию, которое вы ничего не делаете. если цикл while получил что-то через канал, он проверяет, является ли это ответом yes, иначе - он ничего не сделаетВот еще один способ сделать это:
#!/bin/bash
printf "%s\n" "Do you want to un-Mount the External Drives?"
timeout --foreground 10 bash -c '
select sel in "yes" "no"
do
echo "$REPLY"
break
done' | while read -r answer; do
echo ">>Got from user: $answer"
case "$answer" in
"yes") echo "Unmounting stuff" ;;
esac
done
Ключевые моменты:
timeout требует действительного процесса, а не команды оболочки. Здесь мы создаем оболочку bash как отдельный процесс и позволяем ему выполнять работу по вождению select. printf используется вне timeout, чтобы избежать отправки его текста через канал while read -r answer; do . . .done, будет работать тогда и только тогда, когда он получил что-то через канал. Таким образом, если предыдущий bash процесс истечет, он не будет работать - есть действие по умолчанию, которое вы ничего не делаете. если цикл while получил что-то через канал, он проверяет, является ли это ответом yes, иначе - он ничего не сделает