old-www/HOWTO/Bash-Prog-Intro-HOWTO-10.html

124 lines
4.0 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>BASH Programming - Introduction HOW-TO: Misc</TITLE>
<LINK HREF="Bash-Prog-Intro-HOWTO-11.html" REL=next>
<LINK HREF="Bash-Prog-Intro-HOWTO-9.html" REL=previous>
<LINK HREF="Bash-Prog-Intro-HOWTO.html#toc10" REL=contents>
</HEAD>
<BODY>
<A HREF="Bash-Prog-Intro-HOWTO-11.html">Next</A>
<A HREF="Bash-Prog-Intro-HOWTO-9.html">Previous</A>
<A HREF="Bash-Prog-Intro-HOWTO.html#toc10">Contents</A>
<HR>
<H2><A NAME="s10">10. Misc</A> </H2>
<H2><A NAME="ss10.1">10.1 Reading user input with read</A>
</H2>
<P> In many ocations you may want to prompt the user for some input, and
there are several ways
to achive this. This is one of those ways:
<BLOCKQUOTE><CODE>
<PRE>
#!/bin/bash
echo Please, enter your name
read NAME
echo "Hi $NAME!"
</PRE>
</CODE></BLOCKQUOTE>
<P> As a variant, you can get multiple values with read, this example may
clarify this.
<BLOCKQUOTE><CODE>
<PRE>
#!/bin/bash
echo Please, enter your firstname and lastname
read FN LN
echo "Hi! $LN, $FN !"
</PRE>
</CODE></BLOCKQUOTE>
<P>
<H2><A NAME="ss10.2">10.2 Arithmetic evaluation</A>
</H2>
<P> On the command line (or a shell) try this:
<P> echo 1 + 1
<P> If you expected to see '2' you'll be disappointed. What if
you want BASH to evaluate some numbers you have? The solution
is this:
<P> echo $((1+1))
<P> This will produce a more 'logical' output. This is to evaluate an
arithmetic expression. You can achieve this also like this:
<P> echo $[1+1]
<P>
<P> If you need to use fractions, or more math or you just want it, you
can use bc to evaluate arithmetic expressions.
<P> if i ran "echo $[3/4]" at the command prompt, it would return 0
because bash only uses integers when answering. If you ran
"echo 3/4|bc -l", it would properly return 0.75.
<H2><A NAME="ss10.3">10.3 Finding bash </A>
</H2>
<P> From a message from mike (see Thanks to)
<P> you always use #!/bin/bash .. you might was to give an example of
<P> how to find where bash is located.
<P> 'locate bash' is preferred, but not all machines have locate.
<P> 'find ./ -name bash' from the root dir will work, usually.
<P> Suggested locations to check:
<P> ls -l /bin/bash
<P> ls -l /sbin/bash
<P> ls -l /usr/local/bin/bash
<P> ls -l /usr/bin/bash
<P> ls -l /usr/sbin/bash
<P> ls -l /usr/local/sbin/bash
<P> (can't think of any other dirs offhand... i've found it in
<P> most of these places before on different system).
<P> You may try also 'which bash'.
<H2><A NAME="ss10.4">10.4 Getting the return value of a program</A>
</H2>
<P> In bash, the return value of a program is stored in a special variable called $?.
<P> This illustrates how to capture the return value of a program, I assume that the directory
<I>dada</I> does not exist. (This was also suggested by mike)
<BLOCKQUOTE><CODE>
<PRE>
#!/bin/bash
cd /dada &amp;> /dev/null
echo rv: $?
cd $(pwd) &amp;> /dev/null
echo rv: $?
</PRE>
</CODE></BLOCKQUOTE>
<H2><A NAME="ss10.5">10.5 Capturing a commands output </A>
</H2>
<P> This little scripts show all tables from all databases (assuming you got MySQL installed).
Also, consider changing the 'mysql' command to use a valid username and password.
<BLOCKQUOTE><CODE>
<PRE>
#!/bin/bash
DBS=`mysql -uroot -e"show databases"`
for b in $DBS ;
do
mysql -uroot -e"show tables from $b"
done
</PRE>
</CODE></BLOCKQUOTE>
<H2><A NAME="ss10.6">10.6 Multiple source files</A>
</H2>
<P> You can use multiple files with the command source.
<P> __TO-DO__
<HR>
<A HREF="Bash-Prog-Intro-HOWTO-11.html">Next</A>
<A HREF="Bash-Prog-Intro-HOWTO-9.html">Previous</A>
<A HREF="Bash-Prog-Intro-HOWTO.html#toc10">Contents</A>
</BODY>
</HTML>