Hello Script series for Bash. ‘Hello Script’ is a file that contains the most commonly used elements of a programming language so that it can be used as a cheat sheet when working with that language.
bash
bash is the most commonly used shell in Linux. That makes the bash scripting language the most popular shell scripting language. OK, maybe after batch. But then again, bash is much more powerful than batch(DOS scripting language). If want to learn bash, I will recommend this tutorial – Advanced Bash Scripting
Officially, I hate bash. I use perl or other similar high level language to create shell script. I use bash only for the simplest scripts. But even I admit that bash has its uses. So, here is the hello script for bash…
Hello Script
#!/usr/sh
# Printing(IO)
echo "Hello World"
# Variables, concatenation
name='Binny'
year=2008
echo "Hello, " $name " - welcome to " $year
#If,else conditions
if [ $year -gt 2008 ]; then
echo "Welcome to the future - yes, we have flying cars!"
elif [ $year -lt 2008 ]; then
echo "The past - please don't change anything. Don't step on any butterflies. And for the sake of all that's good and holy, stay away from your parents!"
else
echo "Anything wrong with your time machine? You have not gone anywhere, kiddo."
fi
# If you are using anything after this, consider using a high level language.
# For loop
for i in 1 2 3
do
echo $i ") Hi there!"
done
#Numerical Array, foreach
rules[0]="Do no harm"
rules[1]="Obey"
rules[2]="Continue Living"
for ((i=0; i < 3; i++))
do
echo "Rule" `expr $i + 1` ":" ${rules[$i]}
done
#A While Demo
keys=(hello foo lorem)
i=0
while [ $i -lt 3 ]
do
echo ${keys[$i]}
i=`expr $i + 1`
done
# Function, argument, return, call
hello () {
myname=$1 #First argument.
echo "Hello" $myname
}
hello "Binny"
# File IO
# File reading
contents=`cat Hello.sh` #For some reason, I'm losing all the \n's in the file.
echo "Hello has `echo $contents|wc -m` chars" # Or wc -m Hello.sh
# Writing to a file
echo "Hello World from shell script" > /tmp/hello.txt
# Command Executing
ls
# Regular Expressions
string="Hello World"
evil=`echo $string | grep '^Hell'`
if [ "$evil" != "" ]; then
echo "Yup - its evil"
fi
echo "Hello World" | sed -e 's/l//g' #Will return Heo Word
# http://tldp.org/LDP/abs/html/
And, by the way, this will work only in Linux – or if you installed cygwin in your Windows system. Use sh <File_Name>
to execute the above code.
You are working a lot Binny..
đ
Thx.
First of all, please consider posting normal quotes in code. Funny html-quotes may look nice, but bash does not understand them and so we have to change them by hand (which is rather annoying đ
Now to the actual code ..
If you know how many iterations you need, the “for ((i=0; i contents=`cat Hello.sh` #For some reason, Iâm losing all the \nâs in the file.
> echo âHello has `echo $contents|wc -m` charsâ # Or wc -m Hello.sh
contents=$(< Hello.sh); # You won a “useless use of cat”-award
echo “Hello has $(wc -m << string=âHello Worldâ
> evil=`echo $string | grep â^Hellâ`
> if [ “$evil” != “” ]; then
> echo âYup – its evilâ
> fi
string=”Hello World”
if grep “^Hell” << echo âHello Worldâ | sed -e âs/l//gâ #Will return Heo Word
echo “${string//l/}” # assuming $string is still valid
Cheers, Emil
@Emil
> First of all, please consider posting normal quotes in code
I am innocent of this crime. I used normal single and double quote in the code. But WordPress converts them into those fancy html quotes.
And thanks for the other pointers – especially…
> contents=$(< Hello.sh); This will come in handy.