shell 脚本学习

2023-10-27

1、#!/bin/bash           指定解释器是 bash(解释器有几种)

2、a=1   给a赋值为1,注意中间不能有空格,赋值时不能有空格

3、unset a    取消变量a

4、readonly  a=10   声明a为只读变量,并且赋值为10,注意这时就不能用unset 来取消变量a了

5、在shell中,变量的默认类型是字符串类型,不能进行数值计算,比如 a=123,这里的 123是字符串

6、变量的值中有空格的话,要用单引号或者双引号括起来

7、export a   可以将变量 a 弄成全局环境变量,这时所有个shell程序都能用 a 这个变量了,但是只能在本 bash中才能使用,切换到其他 terminal 即其他窗口时就不行了

8、特殊变量 $n 比如 $0 $1 这些变量代表着执行脚本时输入的参数,$0是脚本本身,$1-$9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10)

9、特殊变量 $# 表示输入参数的个数(脚本本身不算),常用于循环程序中

10、特殊变量 $* 表示这个变量代表命令行中所有的参数(脚本本身不算),S*把所有的参数看成一个整体

11、特殊变量 $@  表示这个变量代表命令行中所有的参数(脚本本身不算),S@ 会把每个参数区分对待

12、特殊变量 $? 表示:(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了

13、拼接字符串  a=$b$c    就可以将 字符串 b和字符串 c拼在一起了, a=aaa$b,aaa跟$b拼在一起

14、运算符:(()) 或者是[]  , 例如: a=1   b=1   $((a+b))     $[a+b],

       还可以用 expr: 例如: expr a + b (中间要有空格)

 15、条件判断

 

 16、case 条件判断

        

17、for循环

         

#!/bin/bash

s=0
for i in 1 2 3 4 10
do
    s=$[$s+$i]

done
echo $s

echo ------ \$@ -------------

for i in $@
do
    echo $i
done

echo ------- \$*  ------------

for i in $*
do
    echo $i
done

echo ------ \"\$@\" -------------
# 以下代码就能体现 $@ $*的区别

for i in "$@"
do
    echo $i
done

echo ------- \"\$*\"  ------------
for i in "$*"
do
    echo $i
done

 18、while 循环 (可以用 break)

 19、从终端获得数据类似 scanf:  

 -t 表示在限定时间内要输入数据,不然就继续向后执行代码

-p 表示提示信息

-s 表示不回显,可以用在密码或者按任意键退出的情景下

还有其他的 参数

20、系统函数 basename : 功能是将文件路径中的最后一个文件名提取出来(也可以操作目录)

 21、提取文件的路径:dirname (也可以操作目录)

 22、自定义函数 add,function可写可不写,函数的返回值只能通过 $? 来获取

23、cut 切割:可以用来切割文件,也可以用来切割字符串 

-d 表示 用什么符号来切割          -f 表示要获取第几列数据     3 表示第三列  3-表示第三列之后的

 

 24、sed 流编辑器,一次处理一行内容,处理完成后就把数据送到屏幕,接着处理下一行,直到完成。文件的内容不会受到影响

sed [选项参数]  ‘command’  filename

选项参数  -e 直接在指令列模式上进行sed的动作编辑

 

sed '2a mei nv' sed.txt  :将“mei nv”这个单词插入到sed.txt第二行下

 sed '/wo/d' sed.txt  :      删除sed.txt文件所有包含wo的行

 sed 's/wo/ni/g' sed.txt:将sed.txt文件中wo替换为ni

sed -e '2d' -e 's/wo/ni/g' sed.txt : 将sed.txt文件中的第二行删除并将wo替换为ni

 25、awk : 匹配原则看看正则表达式

 

 26、sort 排序

选项

说明

-n

依照数值的大小排序

-r

以相反的顺序来排序

-t

设置排序时所用的分隔字符

-k

指定需要排序的列

 

 

 

注意:如果在window下编写shell脚本再在Linux系统下跑,可能执行会出错

解决方案1:dos2unix 如果没有该插件 需要安装   sudo apt-get install dos2unix
                    执行 dos2unix shell脚本 转换成功就可以执行运行

解决方案2:在 vi中执行 set ff=unix

 这位老哥总结的更详细

shell脚本语言(超全超详细)_看见代码就想敲的博客-CSDN博客_shell脚本

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

shell 脚本学习 的相关文章

随机推荐

  • 使用umi快速搭建项目

    1 首先安装umi npm install umi g 2 创建一个文件夹 注意不能是中文 在vscode 中进入文件夹 执行命令生成package json文件 npm init 3 修改配置项 scripts start umi dev
  • 浏览器插件不能自动运行问题的设置方案

    目录 1 环境 2 问题描述 3 解决方案 1 环境 浏览器 Microsoft Edge 版本 117 0 2045 31 正式版本 64 位 设置插件 AdGuard 广告拦截器 2 问题描述 每次打开一个新的网页时 插件都不能自动运行
  • 7.1 参数的点估计

    小结 点估计是一种统计推断方法 它用于通过样本数据估计总体参数的值 在统计学中 总体是指一个包含所有个体的集合 而样本是从总体中选出的一部分个体 总体参数是总体的某种特征 如平均值 标准差 比例等 点估计是指使用样本数据来估计总体参数的一个
  • AtCoder Beginner Contest 219 D - Strange Lunchbox

    D 问当A至少x个 B至少y个的最小方案数 定义dp i j 位A有i个 B有j个的最小方案数 然后枚举 因为问的是至少 所以要遍历A从x B从y开始到300的所有答案 因为可能没有刚好到达x y 如样例1 include
  • 局域网的组成及主要设备的作用

    局域网通常是分布在一个有限地理范内的网络系统 一般所涉及的地理范围只有几公里 通常由一个单位或组织建设拥有的计算机网 局域网由网络硬件 包括网络服务器 网络工作站 网卡 网络互联设备等 和网络传输介质 以及网络软件所组成 网络设备 即网络通
  • 知识推理学习笔记

    知识推理 一 OWL本体语言 1 语法 2 逻辑基础 3 描述逻辑系统 1 最基本的元素 概念 关系 个体 1 概念 解释为一个领域的子集 2 关系 解释为一个领域的二元关系 笛卡尔乘积 3 个体 一个领域内的实例 2 TBox术语集 泛化
  • spring boot整合JMS(ActiveMQ实现)

    一 安装ActiveMQ 具体的安装步骤 请参考我的另一篇博文 http blog csdn net liuchuanhong1 article details 52057711 二 新建spring boot工程 并加入JMS Activ
  • 阿里三面 失败

    update 2015 04 16 在tomcat下一个 使用classloader加载类信息之后将被放置在一类方法区 永久代 当这个类创建一个线程 例如 显示当前的时间段 这会导致此类信息已经在该地区长期存在 作已经完毕了 可是没有把这个
  • 微信小程序模板消息群发、无限制推送相关讲解

    模版消息推送是微信小程序采用的通知形式 用户本人在小程序页面有交互行为后 可触发下发通知 通过微信聊天列表中的服务通知可快捷进入查看消息 此外 点击查看详情还能跳转到下发消息的小程序的指定页面 但是为了避免这种通知被滥用 带来不好的用户体验
  • OFD如何转Word?这2个小窍门,1秒帮助大家完成操作

    你知道OFD如何转Word吗 OFD是一种新型的电子文档格式 具有体积小 解析度高 文本可编辑等特点 受到了越来越多用户的青睐 但在实际应用中 由于部分软件对OFD的支持不足 用户在处理OFD文档时可能会遇到一些困难 其中 将OFD文件转换
  • spring实现属性值的注入

    首先创建一个实体类User Data Builder NoArgsConstructor AllArgsConstructor public class User private String username private Intege
  • 远程办公之:向日葵X 使用教程

    一 X版本简介 向日葵远程控制软件 X版本 是集主被控一体的全新客户端 偏向个人用户 只需要安装一个软件就能达到远程协助 查看主机列表 绑定硬件设备等功能 彻底结束了运行两个程序的历史 让远程操作真正做到 轻装上阵 方便用户实现快速的远程协
  • 【Leetcode】662. 二叉树最大宽度

    题目描述 题解 还记得二叉树层序遍历https blog csdn net fisherish article details 115791079 还有二叉堆的概念 结点如果为 i 那么左子节点值为 i 2 右子节点值为 i 2 1 结合一
  • 开发 mirai QQ机器人起步教程

    前言 虽然该文最终是达到以python开发mirai机器人的目的 但起步教程 尤其是环境配置上仍然有大量的相同操作 对其他编程语言仍有借鉴之处 假设你已经安装好了 Java Python等运行必须的环境 mirai生态 mirai官方生态文
  • vue学习笔记:三种for循环用法

    vue学习笔记 三种for循环用法 需求 遍历books数组 计算出总价格 price是单价 count是数量 for的第一种用法 也是最普通的一种 let totalPrice 0 for let i 0 i lt this books
  • 2018焦作网络赛E

    区间更新加法与乘法 x取反是2 64 x 1 由于取模所以取反变成 x 1 就区间 1再 1就可以了 最后区间询问求和 include
  • IDEA配置运行非Maven项目-非常详细

    文章目录 一 写在前面 1 1 为啥会有此篇博文 1 2 准备 二 正文 2 1 使用IDEA打开 Open 项目 2 2 打开项目结构 Project Structure 2 2 1 打开方式 2 2 2 项目结构配置内容总览 2 2 3
  • DANA简介

    Dynamically Allocated Neural Network DANA Accelerator https github com bu icsg dana spinalHDL Doc https spinalhdl github
  • 04-----git查看相应信息的操作

    git branch a 查看所有分支 git log p master remotes origin master 查看本地的master分支和remotes origin master分支的差别 git status 可以查看到工作区
  • shell 脚本学习

    1 bin bash 指定解释器是 bash 解释器有几种 2 a 1 给a赋值为1 注意中间不能有空格 赋值时不能有空格 3 unset a 取消变量a 4 readonly a 10 声明a为只读变量 并且赋值为10 注意这时就不能用u