Shell编程

shell的概述

在计算机科学中,shell就是一个命令解释器

shell是位于操作系统和应用程序之间,是他们二者最主要的接口。

shell负责把应用程序的输入命令信息解释给操作系统,将操作系统命令处理后的结果解释给应用程序。

系统命令文件
Windows系统cmd.exe.bat
Linux系统/csh/  ksh /bash.sh

Shell的使用方式:

手工方式:

手输入命令,按enter执行

脚本方式:

写到一个文件当中进行保存,然后通过命令 sh shell脚本.sh  或者./shell脚本名字.sh(./的意思就是当前目录)

#!/bin/bash

返回的是一个字符打印

echo "你好"
echo "shell!!!"

shell注释:

java:

单//   多 行/**/ 带doc (文档注释:javadoc  /**   */   可以导出注释)

单行注释:
# 注释的内容
多行注释:
:<<! 注释内容   !

shell 变量

普通变量 和  命令变量  

普通变量:
# 定义普通变量:
方式一:
变量名=变量值   (中间不能有特殊字符)
方式二:
变量名='变量值' (引用括号中的原变量值)
方式三:
变量名="变量值"     (如果变量值中有连接符,相当于java+,然后赋值)
命令变量:
命令变量:
方式一:
变量名=`命令`  # 是反引号 第二行第一个
方式二:
变量名=$(命令)
使用变量:
使用变量:
方式一 :
   $变量名     非标准使用,图省事
方式二:
  "$变量名"     非标准使用
方式三:
  ${变量名}     在双引号里面使用变量
方式四:
  "${变量名}"   在双引号里面使用变量,标准使用
只读变量:
readonly 变量名

删除变量:
unset 变量

从以上大家可以看出,shell 定义变量的时候,并没有定义数据类型,所以shell是一种弱类型语言。所以shell不需要指定数据类型

变量的定义规范:

1, 不能以数字开头,是以字母,数字,下划线组成

shell数组

定义方式:

数组名=(值1 值2 值3)
arr=(22 33 44)

赋值方式

数组名[索引]=值
arr[0]=20

获取元素及长度

${数组名[下标]}
${arr[0]}

获取长度

${#数组名[*]}
${#arr[*]}

${#数组名[@]}
${#arr[@]}

运算符:

运算符说明举例
+加法expr  $a  + $b
-减法expr  $a  - $b
*乘法expr  $a  * $b
/除法expr  $b  / $a
%取余expr  $b  % $a
=赋值a=$b 将把变量 b  的值赋给 a。
++/ --自增,自减((a++))

注意事项:

注意点:
1,原生的bash不支持简单的数学运算。 可以通过其他命令实现.expr
2,表达式和运算符中间要有空格
3,完整的表达式要被反引号包含。

举例:
`expr 2 + 2`

shell字符串运算符

运算符说明举例
=检测两个字符串是否相等,  相等返回 true。[  $a = $b ]
!=检测两个字符串是否不相等,  不相等迒回 true。[  $a != $b ]
-z检测字符串长度是否为0,  为0返回 true。[  -z $a ]
-n检测字符串长度是否为0,  不为0返回 true。[  -n "$a"  ]
$检测字符串是否为空,  不为空返回 true。[  $a ]

shell关系运算符

运算符说明举例
-eq检测两个数是否相等,  相等返回 true。[ $a -eq $b ]
-ne检测两个数是否不相等,  不相等返回  true。[ $a –ne $b ]
-gt检测左边的数是否大于右边的,  如果是,则返回  true。[ $a –gt $b ]
-lt检测左边的数是否小于右边的,  如果是,则返回 true。[ $a –lt $b ]
-ge检测左边的数是否大于等于右边的,  如果是,则返回 true。[ $a –ge $b ]
-le检测左边的数是否小于等于右边的,  如果是,则返回 true。[ $a –le $b ]

技能专业程度:

了解:听说过

熟悉:做过

掌握:基本操作

熟练:多次一般操作

精通:高级的操作

shell布尔运算符

运算符说明举例
!取反运算[ !  false ] 返回  true。
-o或运算,有一个表达式为 true  则返回 true。[  $a -lt 20 -o  $b  -gt 100 ]
-a与运算,两个表达式都为 true  才返回true。[  $a -lt 20 -a  $b  -gt 100 ]

Shell逻辑运算

运算符说明举例
&&逻辑的 AND[[ true && true ]]返回 true
||逻辑的 OR[[  false || false ]] 返回 false

Shell 判断语句

if[条件]
then 
 语句体
fi
if[条件]
then 
 语句体
else
 语句体
fi
if[条件1]
then 
 语句体
elif[条件2] 
 语句体
else
 语句体
fi

shell选择语句

case 值 in
模式1)
 语句体1
 ;;
模式2)
 语句体2
 ;;
 …………
 esac

shell 循环语句

for循环
for 变量 in 范围
do 
  循环体
done

示例 :

for loop in A B C 
do
 echo $ loop
done
while循环
while 条件
do
 循环体
done

示列:

a=1
while [ "${a}" -le 10 ]
do
  echo ${a}
  ((a++))
done

shell 函数(方法)

函数名(){
  方法体
}

有参无返回值

test(){
echo "第一个参数$1"
echo "第二个参数$2"
}

调用
test a b

有参有返回值

test(){
 echo "接收到了参数:$1 和参数:$2"
 return $(($1+$2))
}
test 10 20
echo$?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值