1.shell入门
代码写在普通文件中,以.sh结尾。
sudo vim first.sh
#!/bin/bash ##表示用哪一种shell解析器解析脚本
echo "hello world"
执行脚本
sh first.sh
2.shell基本语法
(1)系统变量
shell分为系统变量和用户自定义变量,通过set命令查看系统变量
(3)自定义变量
语法:变量=值,例:STR=aaa,等号两侧没有空格,否则报command not found错误。变量名通常用大写表示。
使用:$STR
注意:定义变量时,单引号和双引号有区别。但引号直接输出内容,双引号对内容进行解析。
(4)示例
在字符串总引用变量:
S1="hello world"
echo "S1=${S1}"
撤销变量:unset S1
定义静态变量:readonly S2=1,只读变量不能unset。
定义全局变量:export A。将变量改为当前shell进程中的全局环境变量,其他shell程序也可使用。
#t1.sh
sudo vim t1.sh
#!/bin/bash
export s1=s1
echo "s1-->"$s1
sh t2.sh
#t2.sh
sudo vim t2.sh
#!/bin/bash
echo "s2-->"$s1
#输出
s1-->s1
s2-->s1
1.t1.sh中直接调用t2.sh会让t2.sh在t1所在的bash进程的子进程空间执行,但子进程空间只能访问父进程中用export定义的变量
2.一个shell进程无法将自己定义的变量提升到父进程空间中去
3.“.”执行脚本时会让脚本在调用者所在进程空间中执行
(5)算术运算
s1=`expr 1 + 1`
s2=$((1+2))
s3=$[1+3]
echo $s1
echo $s2
echo $s3
3.流程控制语句
(1)if语句
#!/bin/bash
read -p "input name:" NAME
if [ $NAME = root ]
then
echo "hello ${NAME},welcome"
elif [ $NAME = a ]
then
echo "hi ${NAME}"
else
echo "sorry"
fi
(2)while循环
#!/bin/bash
i=1
sum=0
while ((i<=10));do
let sum+=i
let ++i
done
echo $sum
(3)for循环
#!/bin/bash
sum=0
for i in {1..10}
do
((sum+=i))
done
echo $sum
sum=0
for ((i=1; i <= 10; i++))
do
((sum+=i))
done
echo $sum