首页 > 系统相关 >shell脚本基础

shell脚本基础

时间:2023-07-15 15:13:01浏览次数:28  
标签:脚本 bin shell 基础 echo test 执行 bash

1.shell基础

1.1 简介

shell介绍

shell应用场景:系统管理,文件操作等

1.2 解释器

解释器是一种命令解释器,主要作用是对命令进行运行和解释,将需要执行的操作传递给操作系统内核并执行

指定解释器

#!/usr/bin/python3

不指定,默认就是这个

#!/bin/bash
#这是一个shell脚本
#by li
echo 'hello,shell'

脚本执行

方式1:sh test.sh

chmod +x test.sh 

方式2:./test.sh

1.3 变量

shell的变量不需要先声明,可以直接使用

a=15,但是注意:等号两侧没有空格

调用变量:$a或者${a}

echo $a

echo ${a}

改为:echo${a}a

echo $aa

 $?,判断上一条命令是否成功,0表示成功,其他表示不成功

echo $?

 $0,返回脚本的文件名称

$1-$9,返回对应的参数值

$*,返回所有的参数值

$#,返回参数的个数

#!/bin/bash
#by ren
echo "脚本名称:$0"
echo "第一个参数是:$1"
echo "第二个参数是:$2"
echo "一共有多少参数:$#"
echo "这些参数是:$"

1.4 常用符号

> 会覆盖原有的内容

>> 不会覆盖原有的内容

;  分号,执行多条命令,cat 1.txt;ls

|  管道符,ps -ef|grep xxx

&& 前面的命令执行成功,后面的才可以执行 cat test.txt && ls

|| 前面的命令执行失败,后面的才可以执行

""  双引号中的变量输出变量值

''  单引号中的变量输出本身

#!/bin/bash
echo "第一个参数:$1"
echo '第一个参数:$1'

 ` ` 输出命令结果

 a=` date` ;echo $a

 1.5 条件判断

1.5.1 文件目录

语法:[ 判断表达式 ]     

注意,[]内部左右都要有空格

-e 目标是否存在

[ -e test.sh ] || touch test.sh

-d 是否为路径

[ -d /root/test ] && echo "/root/test存在"

-f 是否为文件

[ -f test.sh ] && echo "是文件"

1.5.2 权限

-r 是否有读取权限
-w 是否有写入权限
-x 是否有执行权限

[ -x test.txt ] && echo '有执行权限'

1.5.3 比较

整数值

-eq 等于(equal)
-ne 不等于(not equal)
-gt 大于(greater than)
-lt 小于(lesser than)
-ge 大于或等于(greater or equal)
-le 小于或等于(lesser or equal)

字符串

= 相等
!= 不等于

1.5.4  if

用法一:if

if[ 条件判断 ];
then
执行动作
fi

用法二:if-else

if[ 条件判断 ];
then
执行动作
else
执行

#!/bin/.bash
if[ $1 -eq $2 ]
then
echo"$1等于$2"
else
echo "$1不等于$2"
fi

sh test1.sh 1 2

1.5.5 case

case 变量 in
值1)
执行动作1;;
值2)
执行动作2;;
...
*)
执行动作;;
esac

#!/bin/bash
echo '请输入你要购买的商品编号:'
read proid
case ${proid} in 
'1')
echo  '笔记本电脑'
;;
'2')
echo '华为手机'
;;
*)
echo '输入有误请重新输入'
;;
esac

1.6 输入输出

语法:
read -参数
-p:给出提示符

#!/bin/bash
read -p "请输入密码:" passwword
echo '你输入的密码是:' ${password}

 1.7 循环

1.7.1 for

用法一

for 变量名 in `命令`
do
执行动作
done

#!/bin/bash
#依次打印1-10
for i in `seq 1 10`
do
echo $1
sleep 1
done

 `seq 1 10` 等价于$(seq 1 10)

 用法二

for(( 条件 ))
do
执行动作
done

#!/bin/bash
sum=0
for((i=1;i<11;i++))
do
sum=$(($sum+$i))
done
echo $sum

 运算要么用中括号要么用两层圆括号

 1.7.2 while

while[ 条件判断式 ]
do
执行动作
done

#!/bin/bash
sum=0
n=1
while[ $n -lt 11 ];
do
sum=$(($sum+$n))
n=$(($n+1))
done
echo $sum

 1.8 练习

1.8.1 针对redis服务,写一个shell脚本,实现开机自启动,定期检查服务是否可用

1.8.2 jmeter在linux非gui执行脚本前,要删除jtl文件、清空html报告目录内容,写shell脚本完成

 

 

标签:脚本,bin,shell,基础,echo,test,执行,bash
From: https://www.cnblogs.com/lgs-tech/p/17556133.html

相关文章

  • Java基础
    跨平台原理Java的跨平台基于编译器和JVM。编译器把源文件编译成与平台无关的字节码class文件,JVM把该文件解释成与平台有关的机器码指令,在平台上执行。Java面向对象的4个特征1抽象提取对象的共性,构成抽象类或接口,由继承抽象类的类或接口的实现类来重写抽象方法。2继承子类继承......
  • shell位置变量
    1.变量  env查看当前用户系统预设环境变量  set查看系统预设全部变量  read可以从标准输入中读取变量值:  read-p"Pleaseinputanumber:"变量名  unset变量名删除变量  export变量名=值直接定义环境变量2.位置参数:特殊的shell变量,用于传递参数  ......
  • Pycharm基础
    Pycharm基础1.添加解释器2.安装包的两种方式3.插件汉化插件以及一种使各分层括号颜色一致的插件......
  • 服务器/虚拟机 关机或重启之后报:Entering emergency mode. Exit the shell to continu
    具体现象多次重启之后还是不行,提示让进入紧急模式或退出排查原因根据提示输入journalctl,查看系统的日志信息可以看到有一些明显的报错信息可以看到这些报错都与xfs文件系统相关XFS(dm-0)这里给出了具体信息mount:mount/dev/mapper/centos-rooton/susrootfailed......
  • Linux shell 获取脚本文件后面的参数的方法
    原文:https://blog.csdn.net/tcjy1000/article/details/124558257环境Linux主机:Ubuntu20.04.4LTS获取shell脚本参数Linuxshell可以通过$0$1$2等获取shell脚本本身及后面的参数获取路径错误示例:#!/bin/bashecho"--createLinuxrootfsbegin--"echo'$1'rootfs_path......
  • python脚本编译成可执行文件
    如何将Python脚本编译成可执行文件作为一名经验丰富的开发者,你可能会遇到将Python脚本转换为可执行文件的需求。这样做的好处是可以在没有Python解释器的情况下运行脚本,并将脚本与其他人共享,而无需让他们安装Python解释器。下面是一份关于如何实现这个过程的指南。整个流程首先,......
  • Java基础--day02
    变量作用域类变量、实例变量、局部变量 publicclassDemo03{/***类变量static*/staticdoublesalary=89561.36;/***实例变量*从属于对象*不初始化,会变成默认类型*00.0布尔值默认false*除了基本类......
  • Mysql导入sql脚本报错,时间格式数据为空
    Mysql导入sql脚本报错,时间格式数据为空Mysql导入sql脚本时候导入的sql脚本中有时间格式为空的时候时间格字段会报错。解决方式也很简单:查看sql_mode:select@@session.sql_mode;查询结果:STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,N......
  • python魔术方法大全 基础篇、比较篇
    魔术方法大全魔术方法官方名称叫specialmethod,所谓的魔术方法就是python让用户客制化一个类的方式,顾名思义就是定义在类里面的一些特殊的方法。这些specialmethod的特点就是它的method的名字,前后都有两个下划线,所以这些方法也被称为Dundermethod。基础篇比较篇属性篇类......
  • MySQL基础
    1.数据库登录  mysql-uroot-p  mysql-uroot-pmysql  mysql-uroot-p-h192.168.213.200  备份  mysqldump-uroot-p--all-dtabases>all_databasees_20210305.sql      //备份所有库  mysqldump-uroot-p--databasesmysql>mysql_20......