Linuxshell脚本之菜单以及函数

2023-05-16

目录

一、菜单

1.查看菜单格式

2.简单菜单小脚本 

二、函数

1.作用

2.基本格式

3.查看函数

4.删除函数

5. 函数的返回值

6.函数的传参数  

7. 函数变量的作用范围

8.递归

三、数组

1.定义数组格式

2. 数组类型包括

四、 总结


一、菜单

1.查看菜单格式

[root@localhost ~]#  help select

2.简单菜单小脚本 

[root@localhost ~]# vimcaidan.sh

脚本运行结果 

二、函数

1.作用

(1)语句块定义成函数约等于别名

(2)定义函数,再引用函数

2.基本格式

(1)function 函数名 {                      【这个不怎么用】

         命令序列

         }

(2)函数名(){                             【这个形式比较常用】

         命令序列

         }

3.查看函数

[root@localhost ~]# declare -F

 

4.删除函数

unset +函数名

5. 函数的返回值

(1)return

         return表示退出函数并返回一个退出值,脚本中可以用$?变量表示该值

(2)使用原则

  1. 函数一结束就去返回值,应为$?变量只返回执行的最后一条命令的退出返回码

  2. 退出码必须是0-255,超出的值将为除以256取余

(3)使用案例

6.函数的传参数  

7. 函数变量的作用范围

(1)作用范围

         函数在shell脚本中仅在当前的shell环境中有效

         shell脚本中的变量默认全局有效

(2)将变量限定在函数内部使用local命令

8.递归

(1)含义

         函数调用自己本身的函数

(2)阶乘

5!=5*4*3*2*1

三、数组

1.定义数组格式

  1. 数组名=(value0 value1 value2 value3 ......)

  2. 数组名=([0]=value [1]=value1 [2]=value2 ....)

  3. 列表名="value0 value1 value2 value3 ...... "

    数组名=($列表名)

  4. 数组名[0]="value1"

    数组名[1]="value2"

    2数组名[2]="value3"

2. 数组类型包括

(1)数值型

[root@localhost ~]# a=(1 2 3 4 5)
查看下标                0 1 2 3 4
[root@localhost ~]# echo ${!a[*]}
0 1 2 3 4

[root@localhost ~]# echo ${a[0]}
1
输出第一一个数值  注意是从0开始计算

(2)字符型

列出所有参数
[root@localhost ~]# echo ${a[*]}          *代表所有参数
1 2 3 4 5
[root@localhost ~]# echo ${a[@]}        @同*
1 2 3 4 5
共有多少个位置
[root@localhost ~]# echo ${#a[@]}      前面加#数组的长度
5
[root@localhost ~]# echo ${#a[*]}    
5

(3)冒泡排序

四、 总结

本章主要讲了菜单,脚本和数组,大家可以结合函数以及菜单写个脚本菜单,方便大家以后工作使用!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linuxshell脚本之菜单以及函数 的相关文章

  • Linuxshell脚本之菜单以及函数

    目录 一 菜单 1 查看菜单格式 2 简单菜单小脚本 二 函数 1 作用 2 基本格式 3 查看函数 4 删除函数 5 函数的返回值 6 函数的传参数 7 函数变量的作用范围 8 递归 三 数组 1 定义数组格式 2 数组类型包括 四 总结
  • linux中jdk安装/java环境安装

    第一步首先下载java jdk jdk 8u144 linux x64链接 https pan baidu com s 1uvSB 7JP037AdZJPDdGF6A 提取码 mdat 然后使用工具将文件传输到linux上 然后将tar g
  • Linux 之 shell 比较运算符

    运算符 描述 示例 文件比较运算符 e filename 如果 filename 存在 则为真 e var log syslog d filename 如果 filename 为目录 则为真 d tmp mydir f filename 如
  • wget命令详解,断点续传

    1 支持断点下传功能 2 同时支持FTP和HTTP下载方式 3 支持代理服务器 4 设置方便简单 5 程序小 完全免费 wget虽然功能强大 但是使用起来还是比较简单的 基本的语法是 wget 参数列表 URL 下面就结合具体的例子来说明一
  • Linux expect spawn用法

    背景 开发中 经常会有一些任务需要人机交互 比如登录到某台server上 远程拷贝其上的软件 并分发到其他sever上 传统的操作方式 会产生开发人员与计算机的交互 如等待用户输入密码之类的操作会打断自动化流程的实现 解决方案 使用expe
  • vi编辑器的使用(1)

    Linux 系统下的文本编辑器有很多种 包括图形模式下的gedit kwrite等 文本模式下的vi vim vi的增强版本 emacs等 其中vi和emacs是Linux系统中最常用的两个编辑器 本节主要介绍vi编辑器 主要内容包括 vi
  • shell的内置命令

    shell有很多内置在其源代码中的命令 这些命令是内置的 所以shell不必到磁盘上搜索它们 执行速度因此加快 bash提供的help功能 能提供任何内置命令的在线帮助 表14 12列出了这些内置命令 表14 12 内置命令 命 令 功 能
  • Linux命令行中创建的软连接(ln -s)的无法移动问题,以及绝对路径和相对路径的概念

    最近刚开始学习鸟哥的Linux基础篇 昨天试验了其中的一些命令 发现在某一个目录下对某个目录创建的软连接在移动到另一个目录下之后就无法正常打开了 问了下同学 这个问题顺利的解决了 首先 在目录dir1下创建一个目录dir2 用到的命令是 j
  • linux-三剑客(sed、awk、grep)

    三剑客sed awk grep 三剑客与正则表达式是什么关系呢 正则表达式 grep 文本过滤工具 sed 操作 过滤和转换文本内容的强大工具 组合多个表达式 引用 定界符 命令中字符 在sed中作为定界符使用 也可以使用任意的定界符 se
  • make all、make clean、make install 等命令的来源

    在命令行输入make命令后 会查找当前目录下的Makefile文件来执行 一切都是自动运行的 有时候Makefile中有多个程序需要编译 这时可以使用 make all 来编译所有的程序 当然也可以使用 make 程序名 来单独编译某一个文
  • Linux查看文件和日志的常用命令

    Linux查看文件和日志的常用命令 当项目部署和运行起来后 会产生很多的运行日志 日志的内容是程序里定义的重要输出信息 还有程序出错的报错信息 查看日志文件大部分是去日志中获取一些数据 确认某些信息 还有定位问题时查看报错信息 查看文件是查
  • linux下多线程的创建和结构体传参

    下面总结一下linux下多线程的创建和传参 这里的传的参数是结构体的地址 然后在子线程中输出所传结构体对象的值 实现过程非常简单 其中pthread create 创建子线程 pthread join 是等待阻塞子线程结束 pthread
  • 设置Linux服务器登录密码过期时长

    设置Linux服务器登录密码过期时长 登录服务器时 提示登录密码过期 必须修改密码重新登录 You are required to change your password immediately password aged You mus
  • linux-快捷键

    linux快捷键 ctrl a 移动到行首 ctrl e 移动到行尾 ctrl u 删除光标之前的字符 ctrl k 删除光标之后的字符 ctrl l 清空屏幕终端内容 同于clear
  • linux中解压tar.gz或zip类型的文件到具体文件夹

    zip对应的解压缩命令为unzip 命令格式 unzip 选项 压缩包名 选项 d 指定解压缩位置 示例 unzip d tmp test zip 将tar gz文件解压到指定的目录中 tar zxvf tmp tar gz C tmp 在
  • Linux Shell学习简单小结(更新中……)

    if fi bin bash 删除文件 和 新建文件 file readme function delFile if e file then rm f file echo del file fi function addFile if f
  • linux shell脚本无法执行,报错syntax error near unexpected token `$'\r''解决方法

    最近一直忙于项目上的要求 在编写各种自动化安装的脚本 正好有一个需求是在之前的项目上编写过的 目前只需要拿来修改下即可 之前的shell脚本是在服务器上编写的 后来又已复制的方式存在在了电脑上 以txt文件的形式存放的 于是复制到了编辑工具
  • linux-shell-批量查看多个目录下多个csv文件的行数

    批量查看多个文件的行数 文件目录如下 2020 2020 202008 csv 2020 202009 csv 2020 202002 csv 2020 202011 csv 2020 202005 csv 2020 202001 csv
  • brew 安装使用 mysql、redis、mongodb

    在 Mac 生态中 brew 真是个万能神器 今天就来介绍一下怎么使用 brew 安装 mysql redis mongodb 以及如何使用 brew 启动 关闭 重启这些服务 前言 brew 常用命令 查看brew的版本 brew v 更
  • linux centos使用rz、sz命令上传下载文件

    一般情况下 我们会使用终端软件 如 XShell SecureCRT 或 FinalShell 来连接远程服务器后 使用 rz 命令上传本地文件到远程服务器 再解压发版上线 一 安转使用 系统 Linux CentOS 7 安装 rz 和

随机推荐

  • L1-051 打折(c++)

    去商场淘打折商品时 xff0c 计算打折以后的价钱是件颇费脑子的事情 例如原价 xffe5 988 xff0c 标明打 7 折 xff0c 则折扣价应该是 xffe5 988 x 70 61 xffe5 691 60 本题就请你写个程序替客
  • STM32之按键作为外部中断控制led灯

    基础概念 STM32F4 的每个 IO 都可以作为外部中断的中断输入口 xff0c 这点也是 STM32F4 的强大之处 STM32F407 的中断控制器支持 22 个外部 中断 事件请求 每个中断设有状态位 xff0c 每个中断 事件都有
  • STM32在HARDWARE文件下添加xx.c文件,新建xx.c和xx.h文件

    步骤如下 xff1a 新建text 在HARDWARE文件夹下新建time文件夹放 c 和 h文件 text文件下用Ctrl 43 S保存text文件到刚刚建立的time文件夹下 xff0c 命名time c KEIL5里面右键HARDWA
  • Word占用CPU很高?如何解决?已完结

    事件原因 xff1a 这几天在写近代史的论文 xff0c 发现一打开文档 xff0c 电脑的风扇就嗡嗡嗡转个不停 xff0c 打开任务管理器一看 好家伙 xff01 xff01 xff01 这里说明一下 xff1a 我的电脑要是不联机的话
  • 手把手教你做stm32简易串口上位机(接收数据用)

    笔者的开发板是正点原子的stm32F103zet6迷你板 串口的使用是USART1 单片机相关串口的程序就不讲解 xff0c 编写上位机程序是使用C 43 43 语言 xff0c 在VS2017里面编写 xff0c 下面进入正题 一 相关知
  • K66芯片解锁/J-link报错的解决思路

    错误呈现 xff1a 错误描述 xff1a Protection bytes in flash at add 0x400 0x40F indicate that readout protection is set For debugger
  • mpv官方文档部分快捷键

    mpv github官方快捷键文档 xff1a https github com mpv player mpv blob master etc input conf 以下是来自我个人的翻译 常规 q xff1a 退出mpv且不记住播放进度
  • STM32报错解决:..\OBJ\LED.axf: error: L6002U: Could not open file ..\obj\main.o: No such file/

    出现这个问题的原因主要有MDK的安装路径为中文 xff0c 或电脑的用户名为中文 xff0c 解决方法见如下的链接 xff1a 常规的原因 也有出现语法错误导致的 xff0c 如下面这位博主的情况 语法错误 而我遇到这个问题的原因比较难以确
  • Numpy二维数组遍历与二维数组切片后遍历效率比较

    在python numpy使用中 xff0c 可以用双层 for循环对数组元素进行访问 xff0c 也可以切片成每一行后进行一维数组的遍历 代码如下 xff1a span class token keyword import span nu
  • STM32外部中断给AB相编码器计数异常处理

    现象 楼主想实现的功能是使用编码器来实现电机旋转固定的圈数 xff0c 做一个位置闭环 在电机排线 xff08 电源线 43 编码器线 xff09 为30cm时 xff0c 计数正常 xff0c 当线长到40cm时会出现无法到达指定的位置
  • LINUX绑定usb设备名称

    LINUX绑定usb设备名称 起因 xff1a USB转TTL串口通信模块 xff0c USB摄像头模块连接linux电脑时 xff0c 其端口号一般是ttyUSB0 ttyUSB1 ttyUSB2 或video0 video1 video
  • KEIL中查看程序的存储空间的大小

    Program Size Code 61 86496 RO data 61 9064 RW data 61 1452 ZI data 61 16116 Code是代码占用的空间 xff0c RO data是 Read Only 只读常量的大
  • Mysql安装教程5.7(理论通用)

    1 首先在官网下载 mysql 地址 2 下载完成解压 默认在 C Program Files MYsQL 我下面统一使用该地址 想安装到 D 盘就提前建个文件夹命名为 MYSQL 解压进去 3 在MYSQL安装目录下 xff08 C Pr
  • Debia安装和配置dns服务

    首先下载dns服务 接着查看本机的ip地址 xff08 本机为172 16 100 201 之后统一为此ip xff09 设置本地的主服务器地址 xff0c 本机即是主服务器 xff0c 如在其他设备上在这里将namserver修改成其他设
  • Debian安装和配置chrony服务器

    首先准备两台或者两台以上debain进行配置 服务器 apt install chhrony nano etc chrony chhrony conf 添加以下内容 server 172 16 100 201 iburst 此处是chron
  • 锂电池充电(TP4056A芯片)电路分享

    描述 xff08 资料来源文档 特点 封装 引脚功能 应用电路分享 检测电池温度 xff0c 电池温度异常指示和充电状态指示应用 适合需要充电状态指示 xff0c 但不监测温度 xff08 左边 xff09 xff0c 既不需要充电状态提示
  • 利用snapper实现archlinux的系统还原

    首先 xff0c 安装snapper和btrfs progs pacman S snapper btrfs progs 创建配置文件 snapper c cfg home create config f btrfs home snapper
  • --secure-file-priv为Null且修改无效问题

    试过很多方法 xff0c 发现修改无效的根本原因是我的my ini在data文件夹中 xff0c 应该放在有效文件夹里 在命令行输入 mysql help 发现有这样一行 它的意思是c盘或者D Program Files MySQL mys
  • 在python利用代码进行简单的数学运算

    在这里我们会简单说一下在python中用代码进行数学运算 python的运算顺序 和数学里是一样的 xff1a 加减乘除 xff0c 在键盘上加减符号都有 xff0c 而乘除我们用星号 和正斜杠 表示 xff0c 次方用 表示 比如2的三次
  • Linuxshell脚本之菜单以及函数

    目录 一 菜单 1 查看菜单格式 2 简单菜单小脚本 二 函数 1 作用 2 基本格式 3 查看函数 4 删除函数 5 函数的返回值 6 函数的传参数 7 函数变量的作用范围 8 递归 三 数组 1 定义数组格式 2 数组类型包括 四 总结