Bash

From AdminWiki

(Difference between revisions)
Jump to: navigation, search
(bash scripting tips)
Line 4: Line 4:
'''Just a small reminder. Before you start writing a long bash script, think if you can do this in perl.'''
'''Just a small reminder. Before you start writing a long bash script, think if you can do this in perl.'''
 +
 +
 +
== Error and Output Redirect ==
 +
 +
to redirect output and error
 +
  ls -l 1>normal_out 2>error_out
 +
 +
if you want to have both in one file
 +
  ls -l 1>normal_out 2>&1
== Questions and Solutions ==
== Questions and Solutions ==
-
''Arrays in Bash:''
+
=== Arrays in Bash: ===
   foo[0]=1;
   foo[0]=1;
Line 23: Line 32:
   done;
   done;
-
''Variable Variables''
+
=== Variable Variables ===
   foobar=5;
   foobar=5;
Line 31: Line 40:
   echo ${!bar};
   echo ${!bar};
-
''Variable Variables in Arrays''
+
=== Variable Variables in Arrays ===
   foo[0]=1;
   foo[0]=1;

Revision as of 01:04, 24 May 2006

Contents

Bash

Bash is the most common shell form on linux, and most other unix systems.

Just a small reminder. Before you start writing a long bash script, think if you can do this in perl.


Error and Output Redirect

to redirect output and error

 ls -l 1>normal_out 2>error_out

if you want to have both in one file

 ls -l 1>normal_out 2>&1

Questions and Solutions

Arrays in Bash:

 foo[0]=1;
 foo[1]=2;
 foo[2]=3;
 # loop
 for (( i=0; i<${#foo[@]}; i++ ));
 do
     echo ${foo[$i]};
 done;
 # more like a foreach
 for i in ${foo[@]};
 do
     echo $i;
 done;

Variable Variables

 foobar=5;
 bar="foobar";
 echo $foobar;
 echo $bar;
 echo ${!bar};

Variable Variables in Arrays

 foo[0]=1;
 foo[1]=2;
 foo[2]=3;
 foo_tcp[0]="AT";
 foo_upd[0]="AU";
 foo_tcp[1]="BT";
 foo_upd[1]="BU";
 foo_tcp[2]="CT";
 foo_upd[2]="CU";
 # loop
 for (( i=0; i<${#foo[@]}; i++ ));
 do
     echo ${foo[$i]};
     for k in upd tcp;
     do
         data=foo_${k}[$i];
         echo ${!data};
     done;
 done;

More Documentation

The best advanced guide for bash scripting: http://www.tldp.org/LDP/abs/html/

Personal tools