shell脚本基础

目录

一,shell的作用

二,shell脚本及构成

三,脚本执行逻辑及执行方式

脚本执行逻辑

执行脚本文件

四,脚本错误

五,重定向与管道操作

 六,变量

6.1基础变量

 6.2命名要求

6.3从键盘输入内容为变量赋值

6.4变量的作用范围

七,整数变量的运算

 八,特殊shell变量

 九,位置变量

十,总结


一,shell的作用

Linux系统中的shell是一个特殊的应用程序,它介于操作系统内核于用户之间,充当一个“命令解释器”的角色,负责接收用户输入的操作指令进行解释,并需要执行的操作传递给内核执行,并输出执行结果。

查看本机的shell信息

Linux中常见的shell 

bash:基于gun的框架下发展的shell

csh:类似c语言的shell

tcsh:整合了csh提供了更多功能

sh:已经被bash替换

nologin:这个可以让用户无法登陆

bash(/bin/bash)是目前大多数Linux版本采用的默认shell

二,shell脚本及构成

将命令按顺序--列出,最后自动执行

执行需要权限,可以直接使用绝对路径

脚本其实不复杂,通过脚本环境依然可以使用的脚本

构成:

1,脚本申明(解释器):第一行开头“#!/bin/bash”,表示此行一下的代码语句是通过/bin/bash程序来解释执行。#!/bin/bash为默认的解释器

2,注释信息:以#开头的语句表示为注释信息

3,可执行语句:比如echo命令用于输出“ ”之间的字符串

三,脚本执行逻辑及执行方式

脚本执行逻辑

1,顺序执行 :程序从上到下顺序执行

2,选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行

3,循环执行:程序执行过程中需要重复执行多次某段语句

执行脚本文件

方法一:脚本文件路径(绝对路径与相对路径)必须有x权限

[root@localhost~]#./first.sh

方法二:sh脚本文件路径

[root@localhost~]# sh first.sh

方法三:source脚本文件路径(可以通过“.”来执行)

[root@localhost~]#source first.sh

四,脚本错误

1,一类命令错误命令出错不会影响接下来的命令继续

2,语法错误

3,逻辑错误

查代码的正确

bash -n 脚本名称(不在当前目录下加绝对路径) 检查语法错误
bash -x 脚本名称(不在)

总结:脚本错误常见的有三种区别

1,语法错误,会导致后续的命令不继续执行,可以用bash -n检查错误,提示的出错行数不一定是准确的

2,命令错误,是默认后续的命令还会继续执行,用bash -n无法检查出来,可以使用bash -x进行观察

3,逻辑错误:只能使用bash -x进行

五,重定向与管道操作

(一),交互式硬件设备

标准输入:从该设备接收用户输入的数据

标准输出:通过该设备向用户输出数据

标准错误:通过该设备报告执行出错信息

类型设备文件文件描述编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出

/dev/stderr

2显示器

重定向的意思就是,不通过标准输出到屏幕上,输出到你指定的位置

类型操作符用途
重定向出入<从指定的文件读取数据,而不是从键盘输入
重定向输出>将输出结果保存到指定的文件(覆盖原有内容)
>>将输出结果追加到指定的文件尾部
标准错误输出2>将错误信息保存到指定的问(覆盖原有内容)
2>>将错误信息追加到指定的文件中
混合输出&>将标准输出,标准错误的内容保存到同一个文件中

举例:

ls /data /xxx > /data/all.log 2>&1
ls /data /xxx 2> /data/all.log 1>&2
ls /data /xxx &> /data/all.log 
ls /data /xxx >& /data/all.log 
ls /data /xxx 2>&1> /data/all.log 

 

 

 

 

 六,变量

保存将来会变化的数据,及时数据变化,直接调用变量即可,各种shell环境中都使用到了变量的概念,shell变量用来存放系统和用户需要使用的特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而变化。通过使用变量,shell程序能够提供更加灵活的功能,适应性更强。

6.1基础变量

常见shell变量的类型包括:

1自定义变量:系统用户自定义,修改和使用

2环境变量:系统维护,用于设置工作环境

3只读变量:只可以读取不可以更改

4位置变量:通过命令行给脚本传递参数

 5预定义变量:Bash中内置的一类变量,不能知己修改

系统内置变量:PATH,UID,HOSTNAME

 6.2命名要求

区分大小写

不能使程序中的保留字和内置变量,如if,for,hostname

能使用数字,字母下划线,并且不能以数字开头,注意,不支持短横杠“-,和主机名相反”

不能使用内置的变量,使用英文尽量使用词义通俗易懂,PATH

大驼峰StudentFirstName

小驼峰studentFirstName

下划线student_name

注:

1,赋值时使用双引号(“”)可以直接调用变量

2,赋值时使用单引号(‘’)$只会被认为是字符$不会调用变量

3,赋值时使用(``)命令替换,提取命令执行后的输出结果$()用法相同

4,{}可以分隔变量值

补充说明:

如果想要输出为结果可以使用echo$

 如何查看IP地址:

6.3从键盘输入内容为变量赋值

read [-p "提示信息"] 变量名

举例:

#!/bin/bash
read -p "请输入体重kg:" a
if [ $a -lt 50 ] &&  [ $a -lt 60 ]
then
echo "微胖"
elif [ $a -lt 50 ] && [ $a -gt 0 ]
then
echo "瘦"
else
echo "胖"
fi

6.4变量的作用范围

(1)默认情况下,新定义的变量只在当前的shell环境中有效,因此称为局部变量,当进入子程序或新的子shell环境时,局部变量将无法在使用
可以使用 pstree 命令查看Shell环境,输入 bash 命令进入子Shell环境。
使用pstree命令查看当前的shell环境

 (2)命令格式:

可以通过内部命令export指定变量到处为全局变量,使用户定义变量在所有的子shell环境中能够继续使用

格式1: export 变量名

格式2:export 变量名=变量值

七,整数变量的运算

整数变量的运算:

expr  变量1 运算符 变量2 [运算符 变量3]

常用运算符:

加法运算:+
减法运算:-
乘法运算:\*
除法运算:/
整数取余:%

举例:

 

 

 八,特殊shell变量

环境变量

由系统提前创建,用于设置用户的工作环境

配置文件:/etc/profile, ~/.bash_profile

常见的环境变量:

使用env命令可以查看单签工作环境下得环境变量

USER表示用户名称

HOME表示用户的宿主目录

LANG表示语言和字符集

PWD表示当前所在的工作目录

PATH表示可执行程序的默认搜索路径

举例:

[root@localhost opt]# #PASH="$PATH:/root"
[root@localhost opt]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

 九,位置变量

$#:命令行中位置变量的个数
$*:所有位置变量的内容
$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错
$0:当前执行的进程/程序名

$*、$@:表示命令或脚本要处理的参数。
  $*:把所有参数看成以空格分隔的一个字符串整体,代表"$1 $2 $3 $4"。
  $@:把各个参数加上双引号分隔成n份的参数列表,每个参数是独立  的,代表"$1" "$2" "$3" "$4"。

echo "$1"            位置1
echo "$2"            位置2
echo "${10}"         位置10
echo "$10"           位置1和0
echo "$*"            将所有项当成一个值
echo "$@"            所有项
echo "$0"            脚本自身
echo "$#"            后面参数的个数

十,总结

学习了Linux脚本的基础命令,需要熟练掌握,最主要的是需要记住几个变量。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值