介绍: shell其实就是命令解释器,他的作用就是解释用户输入的命令,linux中一个个命令就可以理解为一个个的小程序,我们输入命令,输出结果,但是其实都是shell在帮助我们实现。 我们从输入系统的账户密码开始,到登录系统以后的所有操作都是shell在帮我们解释执行的。
shell简单入门
1、hello world
touch text.sh
vi text.sh #编辑文件
这里的文件名字是可以随便起名的,因为我们要编写shell命令,所以我们一般起后缀名为sh
#! /bin/bash
echo "hello world"
我们的shell脚本就编写好了
chmod 777 text.sh #让文件变成可以执行的文件 chmod +x text.sh
./text.sh #执行脚本我们就可以看到 hello world 的字样了
2、shell变量
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
- 中间不能有空格,可以使用下划线(_)
- 不能使用标点符号
- 不能使用bash里的关键字(可用help命令查看保留关键字)
#! /bin/bash
var="hello world" #定义变量
echo $var #输出变量 "$+变量的名字"
这里的var变量我们也可以将他赋值为命令结果:
var=$(pwd) #输出当前的目录
(1)、shell写循环操作:
1、--------------------------------------------
#! /bin/bash
for((i=0;i<=10;i++))
do
echo $i
done
2、--------------------------------------------
#! /bin/bash
for name in $(ls /home) # name为变量
do
echo $name
done
(2)、删除变量:
#! /bin/bash
var="hello world"
unset var #删除变量var
echo $var
#输出结果为空
(3)、字符串拼接:
#! /bin/bash
var="hello"
varr="world ${var}" #字符串拼接 也可以为: varr="world "${var}" "
(4)、定义数组:
#! /bin/bash
var=(a b c d)
echo $var #默认输出索引为0的
echo ${var[1]} #输出
----------------------------------------------------
var[0]=a
var[1]=b
var[2]=c
echo ${var[1]}
(5)、获取字符串长度:
#! /bin/bash
var="abcde"
echo ${#var} #字符串的长度
(6)、提取字符串:
#! /bin/bash
var="abcde"
echo ${var:1:4} #提取索引1到4的字符串内容
(7)、查找字符在字符串中的位置:
#! /bin/bash
var="hello word"
echo `expr index "${var}" o` #返回o字符的位置5
(8)、多行注释:
:<<EOF
注释内容...
注释内容...
EOF
3、参数传递
#! /bin/bash
for i in $*
do
echo $i
done
[root@iz2ze147nx2245g08b0sjfz ~]# ./text.sh a 2 c #参数传递,空格分隔开 结果打印 a 2 c
4、shell运算
(1)、算数运算
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
- #减法
+ #加法
* #乘法,一般要 \* 这样使用在expr中
/ #除法,取整
% #取余数
#! /bin/bash
a=123
b=456
echo `expr $a - $b ` #注意``该符号,使用expr计算工具
(2)、关系运算符
#! /bin/bash
var="abc"
var="abc"
if [ $var -eq $var1 ] #一定要注意空格if后面和[]里面空格
then
echo "相等"
else
echo "不相等"
fi
(3)、布尔和逻辑运算类型
! #非运算
-o #或运算
-a #与运算
&& #逻辑and
|| #逻辑or
#! /bin/bash
var=100
if [ $var gt 80 -a $var lt 120 ]
then
echo "正确"
else
echo "不正确"
fi #输出争取
(4)、文件测试运算符
#! /bin/bash
var="/root/text.sh"
if [ -e $var ] #-e判断是否存在
then
echo "存在文件"
else
echo "不存在改文件"
fi
-------------------------------------------------
存在文件