shell脚本简单命令

shell脚本

脚本就是可运行代码的集合,脚本语言(计算机语言)脚本的特点:从上到下,按行执行。

python 脚本语言 格式更严谨 严格的执行锁进。也是从上到下按行执行。

shell脚本就是在shell环境(/bin/bash)bash就是shell的解释器。linux环境下的编程语句。

自动化运维。可重复执行的,自动化的在系统中实现增删改查的操作。

shell的解释器,默认就是bash

sh:已经淘汰

bash:sh的扩展版

csh:类c语言

tcsh:整合了c语言的shell

nologin:用户无法登陆到系统的shell

shell的作用:

1、自动化运维

2、批量化的重复操作以及配合定时任务执行。

3、有了脚本就可以减轻管理员的工作量

4、避免配置出错。

5、提高处理批量文件的速度

shell脚本的构成:

复制代码
[root@localhost ~]# cd /opt
[root@localhost opt]# vim test.sh
#!/bin/bash
#声明shell的解释器这一行可以不写,默认就是bash. /python expect,只要不是默认shell,其他的都是声明解释器
#被注释掉的部分是不会被执行的,步骤的含义。
#可执行语句:
#this is my first shell
cd /boot
echo "当前的目录位置:"
#echo的作用就是打印
pwd
echo"展示其中以vml开头的文件:"
ls -lh vml *

第一行:声明解释器(默认就是bash,可以不写)

注释:以#开头,就是注释的信息,注释的部分不会被执行。

可执行语句:linux的命令都可以作为可执行语句,一行一行的往下写。一行就是一个可执行的语句。

shell的运行方式:

3种:

第一种:不给脚本执行权限的执行方式:

sh:就是在当前的shell里生成一个子shell,运行的结果不改变父shell的环境。

source:点命令,他会改变当前shell的环境,也就是真正的执行代码。

bash:就是在当前的shell里生成一个子shell,运行的结果不改变父shell的环境。

第二种:赋权执行

脚本调试完毕,都是赋权执行。

chmod 777 test.sh

复制代码
#执行语句
./test.sh 
​
/opt/test.sh 
​
source /opt/test.sh 

重定向操作:

标准输入

标准输出

复制代码
[root@localhost opt]# ls
jenkins-2.396-1.1.noarch.rpm  test.sh

标准错误输出

复制代码
[root@localhost opt]# llll
bash: llll: 未找到命令...

重定向输出:> >>

"> 标准输出的结果保存到指定的文件,而且还会覆盖文件原有的内容"

">> 标准输出的结果保存到文件原有的内容的尾部追加,不会覆盖原有的内容"

2> 2>> (标准错误输出的结果,保存到指定的文件)

&> &>> (混合输出,既可以保存标准输出,也可以保存错误输出)

重定向输入:< 从指定的文件获取数据。

变量的作用和类型,如何声明变量。

变量的作用:用来存放系统和用户需要使用的设定的参数(值),变量保存在内存中。调用的时候,直接到内存当中查找变量所在的内存地址。

变量的类型:

自定义变量:

自定义变量 名称由用户自己定义 值也可以自定义

变量名的规范:

1、不要使用系统的命令作为变量名

2、不要使用中文

3、不要使用特殊符号开头,可以用下划线开头,不要使用数字开头

4、变量名我们一般会使用对应的英文名称来使用

5、变量名要保持前后一致,要有注释。提高代码的可读性。

变量值:int(整数类型) string(字符串)浮点 布尔:(true false)

双引号,单引号,反撇号之间的作用和区别:

弱引用和强引用

双引号,就是弱引用,变量值就是变量值本身

单引号,强引用,变量值不再是本身定义的值,保持自身的字符串形式

反撇号,命令替换,把命令的执行结果传给变量,作为变量的值,先执行命令,再给变量赋值。

自定义输入变量的值

复制代码
#自定义输入变量的值
read -p "请输入一个整数:" a
read -p "请输入一个整数:" b
c=$(($a+$b))
d=$(($a*$b))
echo $c
echo $d
​
#-p 指定提示符,提示符的内容包含在""中间,""可以为空,但是
必须要有

全局变量:

全局变量 对整个系统生效,所有用户都可以使用

全局生效,每个脚本的变量值,固定的。

持久性

共享性

全局变量适用于不需要经常更改的值。

排错的方法

bash -x 脚本名 (会把每一步都打印出来,这样方便定位每一步错误)

环境变量

环境变量 环境变量是系统创建的,用来设置用户的工作环境。

环境变量可以理解为特殊的全局变量,/etc/profile配置文件。

env查看所有的环境变量

root@localhost \~\]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 可执行的命令,或者可执行的程序的默认路径。 ![](https://img-blog.csdnimg.cn/direct/73921dcf106441c29a76f7c349b3b716.png) #### 位置变量 位置变量,又叫做命令行参数,是在脚本的外面给脚本内部传值。 $1 $2 $3 $4......$9 从第一个到第九个 10以后要用()把数字括起来 $(10) #### 预定义变量: 预定义变量:编程语言和解释器提供的,用户无法更改。只能由系统自行更新和设备。 $\*和$@:表示命令或者脚本需要处理的参数。二者的区别在于区别处理方式的不同。 $\*和$@不加引号的表现一致,都是把参数一个一个处理。 $\*加了引号,会把参数当成一个整体来进行处理。 $#:也是一个全局变量,统计传递给脚本或者函数的参数个数 **$?:true false 命令执行之后返回的状态码,** 只有0,表示成功 true 所有非0,都表示失败 false 返回上一次执行命令的状态 ![](https://img-blog.csdnimg.cn/direct/111320ad6fa443c3ac5052f6ed3be699.png) ![](https://img-blog.csdnimg.cn/direct/492772cf023f4d1080ca6e134189e4e1.png) ![](https://img-blog.csdnimg.cn/direct/11b50b95dfcc44d293bd6a6208b25c2f.png) 小数运算:bc是一个简易的系统自带的计算机程序,可以执行整数,也可以计算小数。 ![](https://img-blog.csdnimg.cn/direct/6f308beb1dd342ee8b5ced1a7ab5de31.png) ![](https://img-blog.csdnimg.cn/direct/aa8b7c90d29e4619b62f717436cce5c5.png) i++:先赋值再加1 ++i:先加1再赋值

相关推荐
是垚不是土6 天前
Go语言中的并发编程--详细讲解
java·运维·开发语言·算法·golang·运维开发
哈希茶馆10 天前
前端工程化利器:Node.js 文件匹配库 fast-glob 完全指南——比传统方案快 350% 的「文件搜索神器」
运维·前端·javascript·npm·node.js·全文检索·运维开发
乔一笔12 天前
泛微OA.E9--07--IDEA搭建后端二开环境
java·intellij-idea·运维开发
Linux运维老纪14 天前
Ansible 守护 Windows 安全(Ansible Safeguards Windows Security)
linux·windows·网络安全·自动化·云计算·运维开发·asible
Linux运维老纪14 天前
Ansible 铸就 Linux 安全之盾(Ansible Builds Linux Security Shield)
linux·服务器·网络·安全·云计算·ansible·运维开发
Zfox_15 天前
【Shell 脚本入门】轻松上手的实战指南
linux·服务器·运维开发·shell脚本
泛黄的咖啡店15 天前
FTP-网络文件服务器
云计算·运维开发
Linux运维老纪17 天前
Python文件操作及数据库交互(Python File Manipulation and Database Interaction)
linux·服务器·数据库·python·云计算·运维开发
Linux运维老纪17 天前
交换机之配置系统基本信息(Basic Information of the Configuration System for Switches)
linux·网络·mysql·华为·云计算·运维开发
Linux运维老纪19 天前
Linux之七大难命令(The Seven Difficult Commands of Linux)
linux·运维·服务器·云计算·运维开发