首页 > 系统相关 >shell基础(保姆式教学)

shell基础(保姆式教学)

时间:2024-09-01 21:51:41浏览次数:13  
标签:bin shell read sum echo sh 教学 bash 保姆式

1.hello world

#! /bin/bash

echo "hello world!"

以上为shell的第一个脚本

我们可以在目录中直接vim hello.sh(创建hello.sh,并编辑)

输入i后开始编辑

#! /bin/bash表示指定该脚本文件应该由哪个解释器来执行。

echo表示输出

编辑完成后,按ESC,输入wq,保存退出

执行脚本可以使用:

sh hello.sh

/bin/bash hello.sh

2.sleep

#! /bin/bash

echo "1"

sleep 5

echo "2"

以上为sleep的简单脚本,表示输出1,等待5秒后输出2

sleep单位默认为秒(s),如果需要其他单位,可在数值后面加上单位,例如sleep 2m(等待2分钟),sleep 1h(等待一小时),sleep 1d(等待一天)

3.variable(变量名)

#! /bin/bash

d = 'date + %H:%M:%S'

echo "begin at $d"

echo "wait 5s"

sleep 5

d1 = 'date + %H:%M:%S'

echo "end at $d"

其中d就相当于变量,这里是输出了当前时间,等待5秒后,再次输出时间d1

其中d和d1后面的不是单引号’‘,而是esc键下面的`

4.数学运算(+、-、*、%、=、/)

#! /bin/bash a=1

b=1

jia=$[$a+$b]

jian=$[$a-$b]

cheng=$[$a*$b]

yu=$[$a%$b]

chu=$[$a/$b]

echo "jia:$jia"

echo "jian:$jian"

echo "cheng:$cheng"

echo "yu:$yu"

echo "chu:$chu"

以上为加减乘除余等基本用法,需要注意书写格式

5.键值变量read

#! /bin/bash

read -p "Please input a number:" a

read -p "Please input another number:" b

sum=$[$a+$b]

echo "sun=$sum"

以上为一个键值的基本用法,这表示输入两个数字为a和b,求他们的和

其中read用于读取您从键盘输入的值,包括字符串等

read与read -p的区别就是后面""的提示语,read不显示提示信息

6.系统变量

$0:shell本身文件名

$?:最后运行命令的返回值

$!:shell最后运行的后台process的PID

$$:shell本身的pid

$#:shell的参数个数

$@:所有参数列表,以"$1 $2 ... $n"的形式输出所有参数,可超9个

$*:所有参数列表,以"$1" "$2" ... "$n"的形式输出所有参数

#! /bin/bash

echo "$0"

echo "$1"

echo "$2"

echo "$?"

echo "$!"

echo "$$"

echo "$*"

echo "$@"

echo "$#"

当我们运行时,传入两个参数sh option.sh 1 2(其中option.sh为文件名,$1 = 1,$2 = 2)

以上内容输出结果为:

option.sh

1

2

0

3525

1 2

1 2

2

7.函数定义

形参:不是实际存在的变量,又称虚拟变量

实参:在调用有参函数时,函数名后面括号内的参数为”实际参数“

#! /bin/bash

function sum(){

read -p "Please inout a number:" a

read -p "Please input another number:" b

sum=$[$a+$b]

echo "sum=$sum"

}

sum $a $b

以上为shell定义函数sum的简单例子

定义函数sum,输入a,b的值,求他们的和,并输出

这个例子也可以用系统变量来进行书写:

#! /bin/bash

function sum()

{

sum=$[$1+$2]

echo "sum=$sum"

}

sum $1 $2

执行时传入$1,$2的值,例如sh function1.sh 1 2

输出结果:sum=3

8.判断语句if

#! /bin/bash

function case()

{

read -p "Please inout a number:" a

read -p "Please input another number:" b

if ((a==b)); then

he=$[$a+$b]

echo "he:$he"

elif ((a>b)); then

jian=$[$a-$b]

echo "a>b:$jian"

else

jian1=$[$b-$a]

echo "a<b:$jian1"

    fi

}

case $a $b

以上代码为if判断的一个语句

定义函数case,输入a,b的值做判断

如果a的值等于b的值,输出a+b

如果a的值大于b的值,输出a-b

如果a的值小于b的值,输出b-a

then表示当条件为真时,执行后面语句

第一个判断用if,第二个判断用elif,最后一个用else,最终用fi结束,条件为两个(),后面接分号;然后接上then

9.case判断

#! /bin/bash

read -p "Please input a number:" a

b=$[$a%2]

case $b in

1)

echo "weijishu"

;;

0)

echo "weioushu"

;;

*)

echo "feishu"

;;

esac

以上是用case写的判断一个数的奇偶性

输入a的值,取a与2的余数赋值给b,b=1时为奇数,b=*(除0,1以外任何数)时为非数,注意使用格式

10.while循环

-eq:等于

-ne:不等于

-le:小于等于

-ge:大于等于

-lt:小于

-gt:大于

#! /bin/bash

a=10

while [ $a -gt 1 ]; do

echo $a

a=$[$a-1]

done

以上为一个while递减的脚本,a等于10,当a大于1时,输出a,同时a=a-1,以此往复循环,直到a不大于1时停止

注:while [] 循环中[]内的条件语句开头和结尾记得空格

11.for循环

#! /bin/bash

for i in `seq 1 5`; do

echo $i

done

以上为for循环递增的一个简单例子

seq 1 5表示i起始为1,终止为5

整个程序表示i起始为1,终止为5,以此输出i的全部值

注:seq两边的点为esc键下面的`

12.break中断循环

! /bin/bash

for i in `seq 1 5`;

do

if(($i == 3));

then

break

fi

echo $i

done

以上是一个嵌套循环语句,表示i的取值范围为1-5,从1开始,并输出i的值,当i等于3时,循环停止,结果为1,2

13.continue跳过本次循环

#! /bin/bash

for i in `seq 1 7`

do

if [ $i == 5 ]; then

continue

fi

echo $i

done

以上是一个continue的简单用法,这里用来跳过5

i取值为1-7,依次输出,当i等于5时,跳过本次循环,不执行输出,直接开始下一次循环

结果为1,2,3,4,6,7

14.exit退出进程

#! /bin/bash

for i in `seq 1 5`

do

if [ $i == 3 ]; then

exit

fi

echo $i

done

以上为一个简单的exit例子,当i的值为3时,退出进程,结果为1,2

标签:bin,shell,read,sum,echo,sh,教学,bash,保姆式
From: https://blog.csdn.net/weixin_64081179/article/details/141730311

相关文章

  • shell学习
    ⼀、简介1.1Shell环境Shell编程跟java、php编程⼀样,只要有⼀个能编写代码的⽂本编辑器和⼀个能解释执⾏的脚本解释器就可以了。Shell的解释器种类众多,常⻅的有:sh-即BourneShell。sh是Unix标准默认的shell。bash-即BourneAgainShell。bash是Linux标......
  • shell(三剑客)
    正则表达式基本正则表达式元字符^行首定位符$行尾定位符.匹配任意单个字符(单个)*匹配前导符0到多次*和左侧的字符配合左侧字符可以出现0次到多次例如:grep"abc*"/tmp/123结果显示的是ababcabcd…….*任意多字符#会出现所有的内容[]匹配制定范围内的一个......
  • shell(第四章数组和函数)
    变量里面有索引比如:name=dufeng调用echo${name:0:1}输出的是du数字形索引是数组123123文字形索引是关联数组qwupdufeng定义数组数组名=(数组数组数组)数组名=(`cat/etc/passwd`)#反`优先执行数组名=(`ls/home*`)#只要数组可以输出结果数组名=(数组"......
  • Vulnhub-行星系列:Venus渗透-超详保姆式教学
    借用Vulnhub的一句话:请记住,VulnHub是一个免费的社区资源,因此我们无法检查提供给我们的机器。在下载之前,请阅读我们的常见问题解答部分,这些部分涉及运行未知VM的危险,以及我们关于“保护您自己和您的网络”的建议。如果您了解风险,请下载!靶机下载地址:https://download.vulnhu......
  • DC-1靶机通关教学(DC靶场系列)
    靶机下载地址:https://www.vulnhub.com/entry/dc-1-1,292/下载完靶机之后需要在虚拟机运行,并且要和kali连接同一网段一、(信息收集)主机发现arp-scan-l-Ieth2通过扫描发现靶机ip地址是192.168.42.133二、(信息收集)端口扫描nmap-A-p-192.168.42.133发现目标靶机开......
  • shell进阶
    一、探测同网段哪些ip正在被使用[root@rocky8~]#catping.sh!/bin/bash**********************************************************Author:liangweisongQQ:[email protected]:2024-08-31FileName......
  • 计算机组成原理教学小程序计算机毕设
    博主介绍:✌专注于VUE,小程序,安卓,Java,python,物联网专业,有16年开发经验,长年从事毕业指导,项目实战✌选取一个适合的毕业设计题目很重要。✌关注✌私信我✌具体的问题,我会尽力帮助你。研究的背景:计算机组成原理教学小程序的研究背景主要源于计算机科学教育中计算机组成原理课......
  • 【网络编程通关之路】 Tcp 基础回显服务器(Java实现)及保姆式知识原理详解 ! ! !
    本篇会加入个人的所谓鱼式疯言❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言而是理解过并总结出来通俗易懂的大白话,小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.......
  • 【Shell脚本】查看Linux网卡实时流量
    原创唐哥成长的小学生在Linux操作系统中,查询网卡流量并不是特别方便,而且统计方式也不直观,下面给大家整理了一个脚本,直接复制到服务器上运行即可,不存在什么依赖关系。脚本内容将内容保存到一个文件中,文件名称可以自定义,比如:vicatnet.sh将以下内容保存到脚本中#!/bin/......
  • [昌哥IT课堂]使用MySQL Shell 部署沙盒数据库实例详解
     概述:这部分解释了如何使用AdminAPI设置沙盒部署。部署和使用本地MySQL的沙盒实例是开始探索AdminAPI的好方法。在将功能部署到生产服务器之前,您可以在本地测试功能。AdminAPI具有内置功能,用于创建正确配置的沙箱实例,以便在本地部署的情况下与InnoDBCluster、InnoDBClusterS......