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$?

相关推荐

  1. Shell编程

    2024-01-25 14:26:01       58 阅读
  2. shell编程

    2024-01-25 14:26:01       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-25 14:26:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-25 14:26:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-25 14:26:01       82 阅读
  4. Python语言-面向对象

    2024-01-25 14:26:01       91 阅读

热门阅读

  1. 【Python基础入门篇】基本函数——os与sys模块

    2024-01-25 14:26:01       57 阅读
  2. [MSSQL]自定义函数之从字符串提取数字

    2024-01-25 14:26:01       58 阅读
  3. 考研机试 链表合并

    2024-01-25 14:26:01       42 阅读
  4. 编程笔记 html5&css&js 051 CSS表格2-2

    2024-01-25 14:26:01       48 阅读
  5. nestjs之适配器模式的应用

    2024-01-25 14:26:01       63 阅读
  6. 编程笔记 html5&css&js 054 CSS默认值

    2024-01-25 14:26:01       49 阅读
  7. HJ8 合并表记录【C语言】

    2024-01-25 14:26:01       56 阅读