当前位置: 首页 > 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.dtcms.com/a/338435.html

相关文章:

  • Image-to-Music API 接入文档(图片生成音乐)
  • 【新手易混】find 命令中 -perm 选项的知识点
  • ANSI终端色彩控制知识散播(I):语法封装(Python)——《彩色终端》诗评
  • JavaScript 性能优化实战技术指南
  • Coze AI大模型 Docker 部署流程详解
  • 设计模式(四)——责任链模式
  • Spring 三级缓存:破解循环依赖的底层密码
  • 【Python语法基础学习笔记】常量变量运算符函数
  • LeetCode 每日一题 2025/8/11-2025/8/17
  • 【嵌入式基础梳理#12】风压计Modbus框架示例
  • RAG:让AI成为你的知识专家
  • Maven Assembly Plugin 插件使用说明
  • Linux下使用ssh-agent实现集群节点间无免密安装部署
  • 深度学习——R-CNN及其变体
  • 【轨物交流】轨物科技与华为鲲鹏生态深度合作 光伏清洁机器人解决方案获技术认证!
  • Session共享与Sticky模式:优化Web应用性能
  • [激光原理与应用-296]:理论 - 非线性光学 - 线性光学与非线性光学对比
  • SpringBoot校园商铺运营平台
  • 跨平台RTSP播放器深度对比:开源方案与商业SDK的取舍之道
  • MiniMax Agent 上线 Market Place ,AI一键复制克隆网站
  • 视觉语言导航(5)——VLN的具体工作原理——Seq2Seq CMA模型 KL散度 TRANSFORMER 3.1前半段
  • PMP-项目管理-十大知识领域:资源管理-管理团队、设备、材料等资源
  • Win10下配置WSL2后nvidia-smi不正常显示问题
  • 第一阶段C#基础-15:面向对象梳理
  • python-----机器学习中常用的数据预处理
  • 【前端面试题】JavaScript 核心知识点解析(第二十二题到第六十一题)
  • 【数据分析】R语言在生态学数据分析中的应用:从数据处理到可视化
  • 美图披露半年报:AI应用取得突破,净利润同比大增71.3%
  • C++11列表初始化 {}
  • GitHub Actions 从核心思想到最佳实践