Shell是什么编程?

什么是Shell?

简单说,是人与计算机硬件之间的“翻译官”,Shell作为用户与系统通信的媒介,自身也定义了各种变量和参数,并且提供了如循环、分支等高级语言才有的控制结构的特性。

Shell的工作方式:
1、交互式:用户输入一条,shell解释并执行一条
2、批处理:用户事先编写好一个脚本,其中包含很多命令,shell会一次性执行完所有的命令。

Shell脚本是各种命令通过逻辑语句组合而成的程序

查看系统中所有可用的shell解释器
[root@ops14 ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

查看当前shell解释器
[root@ops14 20200720]# echo $SHELL
/bin/bash

例子:
1.写一个Hello World
[root@ops14 20200722]# cat hello.sh
#!/bin/bash
echo “Hello World”
2.写一个脚本test2.sh
显示当前系统时间和日期(date)
创建目录/tmp/shtest
切换到/tmp/shtest目录
创建空文件xy,x2y,732
创建空目录a1d,b56e,6test
列出当前目录下x开头的文件或目录(ls x*)
vim test2.sh
(vim编译器里面写的
#!/bin/bash
date
mkdir /tmp/shtest
cd /tmp/shtest
touch xy x2y 732
mkdir a1d b56e 6test
ls x*
) 最后通过bash test2.sh运行

脚本的组成
按照命令的执行顺序编写,每一行一条命令
一个完整的shell脚本应该包含:
脚本声明(#!):放在第一行,告诉系统用哪个shell来解释
注释信息(#):对语句或者程序功能做介绍
可执行的语句:执行具体的命令

Shell脚本的执行
一般来说
shell脚本有三种执行方式:
1、脚本文件路径执行:./hello.sh
2、bash脚本文件路径执行:bash hello.sh
3、source脚本文件路径执行:source hello.sh

注意:只要脚本文件路径没有写错
bash或者source命令都可以直接执行该脚本,但直接通过脚本路径执行有点特殊
[root@ops14 20200722]# ./hello.sh
-bash: ./hello.sh: Permission denied
直接使用路径执行脚本报错:提示操作不允许
需要给脚本添加执行权限
[root@ops14 20200722]# chmod u+x hello.sh
[root@ops14 20200722]# ./hello.sh
Hello World

Shell的变量
变量类型:
字符型:
数值型:
整数
浮点数

强类型
定义变量时必须指定变量类型,参与运算必须符合要求
C、C++、JAVA、PL/SQL

弱类型
不需要指定类型,默认全部是字符型,参与运算会自动进行隐式转换
变量不需要事先定义,可以直接调用

Bash中变量种类
本地变量
环境变量
局部变量
位置变量
特殊变量


注意:


1、等号左右两边不能有空格
2、变量的名字:数字、字母和下划线,不能以数字开头,也不能是bash的关键字

变量引用:$变量名

赋值方式:
1、直接赋值:renxiang=’good boy’
2、变量的引用:goodboy=”$renxing 123”
3、命令的引用:name=whoami
4、read 使用标准输入的方式给变量赋值

符号引用
双引号:引用的变量会替换成变量的值
单引号:引用的变量不会替换成变量的值,保持原来的字符
反引号:引用命令的执行结果

[root@ops14 20200722]# name=‘renxiang’
[root@ops14 20200722]# myname=“My name is $name”
[root@ops14 20200722]# echo $myname
My name is renxiang
[root@ops14 20200722]# myname=‘My name is $name’
[root@ops14 20200722]# echo $myname
My name is $name
[root@ops14 20200722]# myname=whoami
[root@ops14 20200722]# echo $myname
root

撤销变量
unset 变量名

环境变量
用来指定系统运行环境中的一些参数
父shell里面的变量在他的子shell里有效,环境变量具有继承性
我们把有继承性的变量称之为环境变量

环境变量的声明和赋值
export 变量名=变量值
declare -x 变量名=变量值

常用的环境变量
HOSTNAME 当前主机名
SHELL 当前shell类型
USER 当前登录的用户
PWD 当前所在的路径
LANG 当前使用的语言和编码
PATH 命令的环境设置

猜你喜欢

转载自blog.csdn.net/weixin_51014063/article/details/108767040