shell是一个作为用户与Linux系统间接口的程序,它允许用户向操作系统输入需要执行的命令。
虽然shell表面上和Windows的命令提示符相似,但是它具备更强大的功能以完成相当复杂的程序。你不仅可以通过他执行命令、调用Liunx工具,还可以自己编写程序,shell执行shell程序,这些程序通常被称为脚本,他们是在运行时解释执行的。(Linux程序设计 中文第4版)
bash是shell的一种
shell编程 Liunx下的脚本语言
shell 解释型语言 my.sh由解释器解释执行(bash)
c 编译型语言 main.c------->mian.exe
PS1 一级指示符
PS2 二级指示符
一般情况下,脚本文件中的参数以空白字符分隔(例如,一个空格、一个制表符或者一个换行符)。如果你想在一个参数中包含一个或多个空白字符,你就必须给参数加上引号。
字符串通常都被放在双引号中,以防止变量被空白字符分开,同时又允许$扩展
等号两边不能有空格
#str="hello"
#val='100'
#mystr=$str
#let "val+=1"
#val='expr $val+1'
#echo "val=$val"
read line
echo "str=$str"
echo "val=$val"
echo "mystr=$mystr"
echo "line=$line\n"
#echo "PATH=$PATH"
#echo "HOME=$HOME" 环境变量
像$foo这样的变量在引号中的行为取决于你所使用的引号类型。如果你把一个$变量表达式放在双引号中,程序执行到这一行时就会把变量替换为它的值;如果你把它放在单引号中,就不会发生替换现象。还可以通过在$字符前面加上一个\字符以取消它的特殊含义
$0 shell脚本的名字
$# 传递给脚本的参数个数
$$ shell 脚本的进程号

#echo "\$0=$0"
#echo "\$#=$#"
#echo "\$$=$$"
#echo "\$1=$1"
#echo "\$2=$2"

if 语句
#if [ "$line" -gt 100 ]
#then
# echo "$line > 100"
#else
# echo "$line <= 100"
#fi
#if test "$line" = "123"
#then
# printf "==\n"
#else
# echo "!="
#fi
#echo "input"
#read line
#if [ "$line" -gt 100 ] || [ "$line" -lt 0 ]
#then
#echo "arg error"
#exit 0
#fi
#if [ "$line" -ge 80 ]
#then
# echo "A"
#elif [ "$line" -ge 70 ]
#then
# echo "B"
#elif [ "$line" -ge 60 ]
#then
# echo "C"
#else
# echo "D"
#fi
#for
#for i in 1 2 3
#do
# echo "i=$i"
#done
#for i in $(ls)
#do
# echo "i=$i"
# sleep 1
#done
#i=1
#1 let "i+=3"
# 2 i=`expr $i + 1`
#echo "i=$i"
#while [ : ]
#do
# echo "input:"
# read line
# if [ "$line" = "end" ]
# then
# break
# fi
# printf "read: $line"
#done
#echo "input"
#read line
#while [ "$line" != "end" ]
#do
# printf "line=$line\n"
# read line
#done
#i=1
#while [ "$i" -lt 5 ]
#do
# echo "i=$i"
# sleep 1
# let "i+=1"
#done
#i=1
#while [ : ]
#do
# echo "input password"
# read password
# if [ "$password" = "123" ]
# then
# echo "success"
# break;
# fi
#
# if [ "$i" -eq 3 ]
# then
# echo "falied"
# exit 0;
# fi
# let "i+=1"
#done
#until [ -f a.text ]
#do
# echo "not find a.text"
# sleep 1
#done
#echo "find a.text"
#echo "input"
#read line
#case "$line" in
# [Yy] |[Ee] |[Ss] ) echo "this is yes";;
# no ) echo "this is no";;
# * ) echo "***"
#esac