#!/bin/bash
# Linux Mint 19, default bash terminal.
clear
echo ""
echo ""
printf "%b" "This is a test line.\033[s\n"
sleep 2
echo ""
echo ""
printf "%b" "\033[u\033[1A\n"
echo "We are here. "
This is what I do - the output of my script:
Code:
100
101
102
103
104
105
106
107
108
109
110
Do you wish to continue? [Y|n] z
When a user enters an answer other than Y, y, N, n or <Enter> - for example 'z' above - then the cursor is supposed to stay where it is until an acceptable answer comes.
That has to work everywhere on the screen.
The problem I had was that the carriage return moved the cursor to the next line, one line below the question. I first fixed it for everywhere except the last line of the window and that's when I posted my original question.
This version works for me now:
Code:
#!/bin/bash
function askYesOrNo {
printf "\e[1;31;47m$1 [Y|n]\e[0m " # print $1 in color
printf "\e[s" # save cursor x-pos
while true ; do
read answer
if [ -z "$answer" ] ; then
return 0
elif [ "$(tr -d "NnYy" <<< $answer)" != "$answer" ] ; then
break
fi
# How many lines in this window?
LINES=$(tput lines)
# find cursor y-position ( line number )
printf "\e[6n" ; read -sd R POS
CURPOS=${POS#*[}; CUR_Y=${CURPOS%;*}
if [ "$CUR_Y" -eq "$LINES" ] ; then
# printf "\e[u\e[1A\e[K"
printf "\e[u\eM\e[K"
else
printf "\e[u\e[K"
fi
done
if [ "${answer^}" == "Y" ]; then
return 0
fi
return 1
}
for (( i = 100, max = 110; i <= max; i++ )) ; do
printf " %d\n" $i
if [ $i -eq $max ] ; then
if askYesOrNo "Do you wish to continue?" ; then
(( max += 10 ))
fi
fi
done
Could be condensed a bit but this is easier to read.
It works here. Does it work on your system?
I want to get the screen width and cursor positions.
When I used curses, all the screen content was cleared.
So Can I use curses to get the screen size without clearing anything in the window?
Or is there any other alternative???
I can use only C or C++. (0 Replies)
Hi,
Pleae help me on this. Normally, when we say read username, the cursor will come in the first position of next line, but I want the output of the below
Normal usage
-------------
please enter username:
_
I want like the below
----------------------
please enter username:
... (2 Replies)
Hi to all!
I'm a teacher of maths and physics in an italian high school in Milan, Italy.
I need a simple program that read the position of mouse cursor in function of time and write the coordinates in a text file. The time resolution have to be something like 1/10 sec or better (I have to know... (2 Replies)
hi all,
am trying to modify a ksh script to group server names together depending on the cluster they sit in. currently the script does a
find . -name '*.pid'
to find all running servers and prints out their pids and names.
current output looks something like this :
serverA ... (1 Reply)
I need to get the cursor position, and put it inside a variable. Problem is, i don't have the tput command, or ncurses.
Apparently I was supposed to try the following:
echo -e '\E
But I don't get a value or anything. Please help. (3 Replies)
Hi there.
It's easier to explain this with a pseudo code, I hope this makes sense:
var1=hello
echo $var1
some kind of loop
echo loop counter
done
How do I hold the cursor position immediately behind the last output so I'd get something like:
hello123456789
DOS used to use ","... (5 Replies)
Discussion started by: MuntyScrunt
5 Replies
LEARN ABOUT SUNOS
echo
echo(1B) SunOS/BSD Compatibility Package Commands echo(1B)NAME
echo - echo arguments to standard output
SYNOPSIS
/usr/ucb/echo [-n] [argument]
DESCRIPTION
echo writes its arguments, separated by BLANKs and terminated by a NEWLINE, to the standard output.
echo is useful for producing diagnostics in command files and for sending known data into a pipe, and for displaying the contents of envi-
ronment variables.
For example, you can use echo to determine how many subdirectories below the root directory (/) is your current directory, as follows:
o echo your current-working-directory's full pathname
o pipe the output through tr to translate the path's embedded slash-characters into space-characters
o pipe that output through wc -w for a count of the names in your path.
example% /usr/bin/echo "echo $PWD | tr '/' ' ' | wc -w"
See tr(1) and wc(1) for their functionality.
The shells csh(1), ksh(1), and sh(1), each have an echo built-in command, which, by default, will have precedence, and will be invoked if
the user calls echo without a full pathname. /usr/ucb/echo and csh's echo() have an -n option, but do not understand back-slashed escape
characters. sh's echo(), ksh's echo(), and /usr/bin/echo, on the other hand, understand the black-slashed escape characters, and ksh's
echo() also understands a as the audible bell character; however, these commands do not have an -n option.
OPTIONS -n Do not add the NEWLINE to the output.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Availability |SUNWscpu |
+-----------------------------+-----------------------------+
SEE ALSO csh(1), echo(1), ksh(1), sh(1), tr(1), wc(1), attributes(5)NOTES
The -n option is a transition aid for BSD applications, and may not be supported in future releases.
SunOS 5.10 3 Aug 1994 echo(1B)