• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1994
  • Last Modified:

Linux have bash script wait for user

Hello Expert,
Is there a way that a bash script can be made to wait for the user to do something in the terminal window, and then when the user has completed the task, type a phrase and hit enter and the script will execute from where it was asked to wait. Also can vi be executed from a script that allows text changes to the file vi was invoked with and the changes saved. thank you, Joel
0
JoelRidley
Asked:
JoelRidley
2 Solutions
 
brettmjohnsonCommented:
> can vi be executed from a script that allows text changes to the file vi was
> invoked with and the changes saved.

Yes.  Just invoke the command 'vi theFile'.  If you want the process to be
completely automated (rather than having the user interact with vi), then
consider using sed instead of vi.


> Is there a way that a bash script can be made to wait for the user to do something
> in the terminal window, and then when the user has completed the task, type a
> phrase and hit enter and the script will execute from where it was asked to wait.

I think the 'read' command is what you are looking for.  From the bash man page:

       read [-ers] [-u fd] [-t timeout] [-a aname] [-p prompt] [-n nchars] [-d
       delim] [name ...]
              One  line  is  read  from  the  standard input, or from the file
              descriptor fd supplied as an argument to the -u option, and  the
              first word is assigned to the first name, the second word to the
              second name, and so on, with leftover words and their  interven-
              ing  separators  assigned  to the last name.  If there are fewer
              words read from the input stream than names, the remaining names
              are  assigned  empty  values.  The characters in IFS are used to
              split the line into words.  The backslash character (\)  may  be
              used  to  remove any special meaning for the next character read
              and for line continuation.  Options, if supplied, have the  fol-
              lowing meanings:
              -a aname
                     The words are assigned to sequential indices of the array
                     variable aname, starting at 0.  aname is unset before any
                     new  values  are  assigned.   Other  name  arguments  are
                     ignored.
              -d delim
                     The first character of delim is  used  to  terminate  the
                     input line, rather than newline.
              -e     If the standard input is coming from a terminal, readline
                     (see READLINE above) is used to obtain the line.
              -n nchars
                     read returns after reading nchars characters rather  than
                     waiting for a complete line of input.
              -p prompt
                     Display prompt on standard error, without a trailing new-
                     line, before attempting to read any input.  The prompt is
                     displayed only if input is coming from a terminal.
              -r     Backslash does not act as an escape character.  The back-
                     slash is considered to be part of the line.  In  particu-
                     lar,  a  backslash-newline pair may not be used as a line
                     continuation.
              -s     Silent mode.  If input is coming from a terminal, charac-
                     ters are not echoed.
              -t timeout
                     Cause  read  to time out and return failure if a complete
                     line of input is not read within timeout  seconds.   This
                     option  has  no  effect if read is not reading input from
                     the terminal or a pipe.
              -u fd  Read input from file descriptor fd.

              If no names are supplied, the line read is assigned to the vari-
              able  REPLY.   The  return  code  is zero, unless end-of-file is
              encountered, read times out, or an invalid  file  descriptor  is
              supplied as the argument to -u.

0
 
ahoffmannCommented:
> .. can vi be executed from a script that allows text changes to the file vi was invoked with and the changes saved.
you won't do that, believe me. Better use awk, sed, tr, perl, or whatever have been designed for text processing.

> .. script can be made to wait for the user to do something in the terminal window, and then when the user has completed the task, type a phrase and hit enter ..

as already explained: read
man read
0
 
JoelRidleyAuthor Commented:
thanks brettmjohnson, this does work except for when I hit enter the firsst time the script continues on. I'm not sure how to use the read -]prompts] command. Can this be used to wait for a keyword? thanks Joel
Hello ahoffmann, thanks for the tips I will split points betwen you both as both answers are correct thansks Joel
0

Featured Post

Get free NFR key for Veeam Availability Suite 9.5

Veeam is happy to provide a free NFR license (1 year, 2 sockets) to all certified IT Pros. The license allows for the non-production use of Veeam Availability Suite v9.5 in your home lab, without any feature limitations. It works for both VMware and Hyper-V environments

Tackle projects and never again get stuck behind a technical roadblock.
Join Now