#!/bin/bash
###shell脚本的优势是什么,其使用的是什么,基于Linux强大的可用指令?
#read -s -p "请输入您的密码:" pass
echo "您输入的密码是 $pass"
your_name="runoob.com.cn"
myname="wulijiao"
readonly myname
unset myname
test_array=(1 2 3 4 5 6 7 8 9 0)
test_array=(
1
2
3
4
5
6
7
8
9
0
)
test_array[0]=abc
str="www.runoob.com/linux/linux-shell-variable.html"
echo "$your_name"
echo $your_name
echo ${your_name}
echo "hello,I know your name is \"${your_name}\""
echo "${#your_name}" #get the length of string
echo "str%%*/ : ${str%%*/}"
echo "00 ${your_name:1:3}" #get the one to three chars
echo "01 test_array 0 = ${test_array[0]}"
echo "02 ${test_array[@]}"
echo "03 ${#test_array[*]}"
echo "04 ${#test_array[0]}"
echo "05 ${your_name#*.}" #delete the chars all on the left begin "" #-left the first char
echo "06 ${your_name##*.}" #delete the chars all on the left begin the rightest ##-left and the latest char
echo "07 ${your_name%.*}" #?the first few "."
echo "08 ${your_name%%*.}"
echo "09 ${your_name%%.*}" #right and the first char
echo "10 ${your_name:5}" #from 5th char untill end
echo "11 ${your_name:0-9:2}" #from right untill 9th 2 chars
echo "12 ${your_name:0-9}" #from right untill finish
echo "13 .the number of parameters: $#" #the number of parameters
echo "14 .the first parameter: $1"
echo "15 .print all parameters of input: $*"
echo "15 .the id of current process: $$"
echo "16 .the laster processs' id in backstage:$!"
expr length "$your_name"
#Transfer parameters
#arithmetic operator
value=`expr 2 + 2`
echo "the summ of 2+2 = $value"
value=`expr 3 - 1`
echo "the substraction of 3-1 = $value"
value=`expr 2 \* 3`
echo "the multiplication of 2*3 = $value"
value=`expr 6 / 2`
echo "the division of 6/2=$value"
value=`expr 11 % 10`
echo "the remainder of 11%10=$value"
##judgement
nvala=10
nvalb=20
if [ $nvala == $nvalb ]
then
echo "nvala == nvalb"
fi
if [ $nvala != $nvalb ]
then
echo "nvala != nvalb"
fi
##relation arithmetic operator
a=10
b=20
if [ $a -eq $b ]
then
echo "$a -eq $b equal"
else
echo "$a -eq $b:not equal"
fi
if [ $a -ne $b ]
then
echo "$a -ne $b not equal"
else
echo "$a -ne $b not equal not"
fi
if [ $a -gt $b ]
then
echo "$a -gt $b greater more"
else
echo "$a -gt $b not greater moree"
fi
if [ $a -lt $b ]
then
echo "$a -lt $b less more"
else
echo "$a -lt $b not less more"
fi
if [ $a -ge $b ]
then
echo "$a -ge $b greater equal"
else
echo "$a -ge $b not greater equal"
fi
if [ $a -le $b ]
then
echo "$a -le $b less equal"
else
echo "$a -le $b not less equal"
fi
##bool arithmetic operator
if [ $a != $b ]
then
echo "$a != $b not equal"
else
echo "$a != $b not less equal"
fi
if [ $a -lt 20 -o $b -ge 20 ]
then
echo "$a -lt 20 -o $b -ge 20"
else
echo "$a -lt 20 -o $b -ge 20 not"
fi
if [ $a -lt 20 -a $b -ge 20 ]
then
echo "$a -lt 20 -a $b -ge 20"
else
echo "$a -lt 20 -a $b -ge 20 not"
fi
###logical arithmetic operator
if [[ $a -lt 20 && $b -ge 20 ]]
then
echo "$a -lt 20 && $b -ge 20"
else
echo "$a -lt 20 && $b -ge 20 not"
fi
if [[ $a -lt 20||$b -ge 20 ]]
then
echo "$a -lt 20 || $b -ge 20"
else
echo "$a -lt 20 || $b -ge 20 not"
fi
###character string arithmetic operator
stringa="wulijiao"
stringb="user"
if [ $stringa = $stringb ]
then
echo "$stringa = $stringb"
else
echo "$stringa = $stringb not"
fi
if [ $stringa != $stringb ]
then
echo "$stringa != $stringb"
else
echo "$stringa!== $stringb not"
fi
if [ -z $stringb ]
then
echo "-z $stringb check the length of string is 0"
else
echo "-z $stringb check the length of string isn't 0"
fi
if [ -n $stringb ]
then
echo "-n $stringb check the length of string isn't 0"
else
echo "-n $stringb check the length of string is 0"
fi
if [ $stringb ]
then
echo "$stringb the string is null"
else
echo " $stringb the string isn't null"
fi
###file test arithmetic operator
file="/sdc/wulijiao910129/test.sh"
if [ -r $file ]
then
echo "-r the $file is can be read"
else
echo "-r the $file isn't can be read"
fi
if [ -w $file ]
then
echo "-w the $file can be write"
else
echo "-w the file isn't can be write"
fi
if [ -s $file ]
then
echo "-s the $file is null"
else
echo "-s the $file isn't null"
fi
if [ -e $file ]
then
echo "-e the $file is exit"
else
echo "-e the $file isn't exit"
fi
if [ -f $file ]
then
echo "-f the $file is ordinary file"
else
echo "-f the $file isn't ordinary file"
fi
###printf and the changer/escape character
printf "%-10s %-8s %-4s\n" name gender weight
printf "%-10s %-8s %-4s\n" 郭靖 男 66.1234
printf %s abcdefg "\n"
printf %s adc def
printf "%s and %d \n"
###test
##value test -eq -nq -gt -lt -ge -le
if test $[a] -eq $[b]
then
echo "the values is equal"
else
echo "the values isn't equal"
fi
##string test = != -z -n
if test $stringa = $stringb
then
echo "the strings is equal"
else
echo "the strings isn't equal"
fi
##file test -e -r -w -s -f -x -b
if test -e $file
then
echo "test -e the $file is exit"
else
echo "test -e the file isn't exit"
fi
if test -e $file -o -e ./test.sh
then
echo "test -e -o at least one file exit"
else
echo "test -e -o no file exit"
fi
###
echo "############## process controcol ###############"
if [ $a -eq $b ]
then
echo "process $a equal $b"
elif [ $a -lt $b ]
then
echo "process $a less than $b"
fi
for var in 1 2 3 4 5 6
do
echo "for value=$value"
done
for loop in 1 2 3 4 5 6
do
echo "loop value $loop "
done
for str in "this is a string"
do
echo "str print "$str
done
int=1
while (( $int<=5 ))
do
echo $int
let "int++"
echo "int value = $int"
done
###read something input loop
<<!
while read FILM
do
echo "this is the content what you input $FILM"
done
!
###infinite cycle
<<!
while ture
do
echo "cycle ture"
done
while :
do
echo "cycle :"
done
for (( ; ; ))
untill [ -z stringa ] #condition
do
echo "the stringa is null"
done
!
value=2
while :
do
case $value in
1)
echo "case 1 continue"
continue;
;;
2)
echo "case 2 break"
break;
;;
*)
echo "this is default value"
break;
;;
esac
done
######founction
echo "############# founction #########"
demotest(){
echo "this is a test founction"
}
demotestWithReturn(){
echo "this founction has return"
echo "input the first value:"
read nValueone
echo "input the second value:"
read nValuetwo
return $(($nValueone+$nValuetwo));
}
demotestmain(){
echo "demotest"
demotest
demotestWithReturn
echo "the return value is:$?"
}
demotestmain
:<<!
notes method 1
!
:<<EOF
notes method 2
EOF
exit 0