当前位置: 首页 > news >正文

shell脚本第一阶段

一、学习脚本的秘诀

多看(看懂)----》多模仿(多练)----》多思考

二、脚本的基本写法

#!/bin/bash
//脚本第一行,#! 魔法字符,指定脚本运行代码执行的程序。即它告诉系统这个脚本需要什么解释器来执行,也就是使用哪一种shell//以下内容是对脚本的基本信息的描述
# Name: 名字
# Desc: 描述describe
# Path: 存放路径
# Usage: 用法
# Update: 更新时间//下面就是脚本的具体内容
commands
...

三、脚本的执行方法

./xxx.sh或者绝对路径/shellbash/xxx.sh

也可以使用非标准执行:source xxx.sh或者bash xxx.sh或者.   xxx.bash

四、批量重命名多个文件

rename file1 test1 file1?.jpg

五、变量的定义

1.变量的分类

本地变量:当前用户自定义的变量。当前进程中有效,其他进程及当前进程的子进程无效。

环境变量:当前进程有效,并且能够被子进程调用

查看当前用户的环境变量                   env

查询当前用户的所有变量(临时变量与环境变量)       set

export       //将当前变量变成环境变量

export A=hello     //临时将一个本地变量(临时变量)变成环境变量
env|grep ^A

永久生效:

vim /etc/profile 或者~/.bashrc

export A=hello

或者

A=hello

export A

说明:系统中有一个变量PATH,环境变量

export PATH=/usr/local/mysql/bin:$PATH

全局变量:全局所有的用户和程序都能调用,且继承,新建的用户也默认能调用

$HOME/.bashrc         当前用户的bash信息(aliase、umask等)

$HOME/.bash_profile     当前用户的环境变量

$HOME/.bash_logout      每个用户退出当前shell时最后读取的文件

/etc/bashrc         使用bash shell用户全局变量

grep --color=auto

umask

/etc/profile          系统和每个用户的环境变量信息

mycat_home=/usr/local/mycat/bin

export mycat_home

执行mycat命令

# mycat

$ mycat

/etc/profile-->$HOME/.bash_profile-->$HOME/.bashrc-->/etc/bashrc-->$HOME/.bash_logout

系统内置变量(内置bash中变量):shell本身已经固定好了它的名字和作用。

$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错

若退出状态值为0,表示命令运行成功

若退出状态值为127,表示command not found

若退出状态值为126,表示找到了该命令但无法执行(权限不够)

若退出状态值为1$2,表示没有那个文件或目录

$$:当前所在进程的进程号     echo $$       eg:kill -9 'echo $$'      =exit    退出当前会话

$!:后台运行的最后一个进程号   (当前终端)     # gedit &

!$  调用最后一条命令历史中的参数

!!:调用最后一条命令历史

$#:脚本后面接的参数的个数

./1.sh a b c         输出结果为3

$*:脚本后面所有参数,参数当成一个整体输出,每一个变量参数之间以空格隔开

$@:脚本后面所有参数,参数是独立的,也是全部输出

$0:当前执行的进程/程序名 echo $0

$1~$9  位置参数变量

${10}~${n} 扩展位置参数变量 第10个位置变量必须用{}大括号括起来

变量定义规则:

shell中变量不分类型

变量名=变量值

等号两边不能有任何空格

变量名不能以数字或者特殊符号开头

变量名严格区分大小写

变量定义

有类型变量 declare -i/-r/-x/-a/-A

交互式定义变量read [-p/-n/-t/s] 变量名

数组定义

普通数组:元素的索引下标是整数

关联数组:元素的索引下标是字符串

定义数组:

 array1[索引下标]=元素1

 array2=([索引下标]=元素1 [元素下标]=元素2...)

变量获取

echo  $变量名

echo ${变量名}

-----------------------------------------------------------------------------------------------------------------

 四则运算

$(())

$[]

expr   expr 1 + 1

let

    n=1;let n=n=1

    n=1;let n+=1

i++和++i

对变量没影响,对表达式有影响,i++先赋值再自增,++i先自增再赋值。

        

http://www.lryc.cn/news/625107.html

相关文章:

  • Linux命令大全-rm命令
  • 音频算法工程师技能1
  • Docker常见指令速查
  • mq存量消息如何处理
  • 电商API接口实录对接:1688混批价格函数处理
  • python DataFrame基础操作
  • 烟草行政处罚案卷制作与评查平台被中国信通院认定为2025年商业产品及企业典型案例
  • 第一阶段C#基础-13:索引器,接口,泛型
  • AI出题人给出的Java后端面经(十八)(日更)
  • 什么是系统设计
  • 电竞酒店和高校宿舍对AI云电竞游戏盒子的需求有什么不同?
  • 从虚拟到现实:数字孪生赋能智能制造
  • docker部署flask并迁移至内网
  • 前端面试通关:Cesium+Three+React优化+TypeScript实战+ECharts性能方案
  • css word-pass
  • 强化学习-CH2 状态价值和贝尔曼等式
  • 【新手易混】find 命令中 -perm 选项的知识点
  • Unity2022打包安卓报错的奇葩问题
  • 云原生俱乐部-docker知识点归纳(1)
  • 2-4〔O҉S҉C҉P҉ ◈ 研记〕❘ 漏洞扫描▸AWVS(WEB扫描)
  • PyTorch数据处理工具箱详解|深入理解torchvision与torch.utils.data
  • 嵌入式设备Lwip协议栈实现功能
  • 28、企业安防管理(Security)体系构建:从生产安全到日常安保的全方位防护
  • 如何将 LM Studio 与 ONLYOFFICE 结合使用,实现安全的本地 AI 文档编辑
  • 【完整源码+数据集+部署教程】海洋垃圾与生物识别系统源码和数据集:改进yolo11-RVB
  • 遥感机器学习入门实战教程 | Sklearn 案例②:PCA + k-NN 分类与评估
  • 在开发后端API的时候,哪些中间件比较实用
  • 【音视频】ISP能力
  • python实现pdfs合并
  • [矩阵置零]