Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序等。 用户每输入一条命令,Shell就执行一条。这种从键盘输入命令,就可以立即得到回应的对话方式,称为交互的方式。
当命令或程序语句不在命令行下执行,而是通过一个程序文件来执行时,该程序文件就被称为Shell脚本。 在Shell脚本里内置了很多命令、语句及循环控制,然后将这些命令一次性执行完毕,这种通过文件执行脚本的方式称为非交互的方式。 Shell脚本语言很适合用于处理纯文本型的数据,而Linux系统中几乎所有的配置文件、日志文件,以及绝大对数的启动文件都是纯文本类型的文件。
[root@localhost ~]# cat /etc/shells
/bin/sh (指向/bin/bash)
/bin/bash (默认shell类型)
/usr/bin/sh
/usr/bin/bash
关键字
Linux命令
shell自带命令
函数
控制语句
.sh 作为文件后缀,代表是shell脚本
/etc/profile ~/.bash_profile ~/.bashrc ~/etc/bashrc(以最后一个生效)
shell脚本类型:
脚本书写规范
#!/bin/bash
添加注释信息
#日期,#作者,#作用,#版本,#联系方式…
#Date:2022-6-12
#Author:
#Desc:
#Vers:
#Email:
文件名后缀 .sh
shell脚本执行:
shell脚本编写规范:
写shell脚本时,命令用反单引号括起来``
设置变量 name=upper(等号两边不能有空格)
成对的符号,建议一次性写完 () {} [] ’ ’ " " ``
对于流程控制语句,应一次性将格式写完,再添加内容。缩进最好空四个
if []
then(注意缩进)
fi
for
do
...
done
变量赋值方法
变量名="值 "(=左右两边没有空格)
echo $变量名(进行输出)
对于环境变量:变量名大写
set命令:查看环境变量
env命令:查看全局变量
declare:用来做定义
unset NAME:取消变量/删除变量
eg :
# unset A 撤销变量 A
# readonly B=2 声明静态的变量 B=2 ,不能 unset
用户自定义只在set中有;env中没有
(仅在当前环境有效)
1、export 变量名=值
2、变量名=值;export 变量名
3、declare -x 变量名=值
赋值用= ; 相等用==
~/.bashrc
全局环境变量
/etc/profile
/etc/bashrc
/etc/profile.d:存放脚本
取消环境变量:unset 变量名
变量名=值
变量名=‘值’
变量名=“值”
变量名=command
变量名=$(command)
变量数组
特殊变量
赋值时引号的作用:
字符串变量:
数组:
获取数组元素:
$0 获取当前shell脚本文件名
$n (n>0) 代表参数值
$@ 代表命令行中所有的参数
$# 代表命令行中所有参数的个数
$* 代表命令行中所有的参数
$? 获取上一条命令执行的状态返回值 0代表成功,非0代表失败
$$ 获
文章浏览阅读291次。https://github.com/microsoft/cascadia-code/releases_找不到所选的字体cascadia code
文章浏览阅读107次。问题:dedecmsV5.7 在后台上传了m4a的音频文件(如何添加m4a的音频格式,更改系统-系统基本配置-附件设置)之后,列表里不展示,如图:解决方案:打开include/dialog/select_media.php,查找#\.(mp3|wma大约212行else if(preg_match("#\.(mp3|wma)#", $file)){..._dede后台 上传音频报500
文章浏览阅读2.4k次。javafxchina JavaFX 教程 中文_netbean开发javafx
文章浏览阅读5.2k次,点赞8次,收藏41次。FLANN快速近似最邻近算法官方指导文档IntroductionQuick Start 快速学习Downloading and compiling FLANN 下载和编译Upgrading from a previous version 版本升级Compiling FLANN with multithreading support 多线程支持Using FLANN 使用细则Using FLANN from C++flann::Indexflann::Index::buildIndexflann::Index_flann快速最近邻搜索库的手册
文章浏览阅读84次。Unstated Next readme 的中文翻译前言这个库的作者希望使用 React 内置 API ,直接实现状态管理的功能。看完这个库的说明后,没有想到代码可以这个玩。短短几行代码,仅仅使用 React Hooks ,就实现了状态管理的功能。看完之后,第一想法就是翻译成中文,分享给其他人。提交 Pull Request 后,库作者将我的翻译合并了。同时作者欢迎将 README 翻译..._react 不再使用 mbox redux
文章浏览阅读4.7k次。连表操作:##将两张表拼合在一起##结果为笛卡尔积select * from dep,emp;#select * from emp,dep where emp.dep_id = dep.id;mysql也知道 你在后面查询数据时 肯定会用到拼表操作所以特地的开设了对应方法inner join 内连接 只拼接两张表中公有的数据(不能拼接无关系的)left join 左连接 把左边的表作为主表 (展示左表所有的数据没有的数据用null代替)right join _操作数据库失败:duplicate entry '7117081892365615-qqfs-15957703860-2021-01-15
文章浏览阅读2.6k次,点赞5次,收藏20次。基因组学中的一笔画问题——Reads怎么拼接成重叠群(Contigs)_graph neural network meets de bruijn genome assembly
文章浏览阅读156次。相随与欢大一下-面向对象课程设计-彩色泡泡机题目详解与欢行一、题目与需求分析:基于Qt框架的GUI设计与实现需求:1、绘制泡泡(颜色、大小等配置信息随机产生)2、点击游戏区域即可产生泡泡。3、泡泡会向上漂浮离开(速度随机)。二、具体实现:A、泡泡绘制类Bubble的设计bubble.h#ifndef BUBBLE_H#define BUBBLE_H//本类为泡泡的实现类//采用面向对象思想设计泡泡类并通过具体算法设计将其实现//2021/6/17 行//For 欢//不
文章浏览阅读3.5k次。安装Tomcat之前需要先安装MySQL[root@localhost ~]# cd /usr/local/src/[root@localhost src]# tar -zxvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz[root@localhost src]# [ -d /usr/local/mysql ] && /usr/local/mysql /usr/local/mysql_old[root@localhost src]# mv m_tomcat命令
文章浏览阅读430次。访问图片在项目中非常常见,如果我们每次请求图片时都访问无法获取,因为它将消耗大量的流量,并且图片占用大量的内存空间,如果有太多的图片没有释放,很容易导致内存溢出,那么android异步加载图片并缓存到本地的方法大家知道吗?一起跟着爱站技术频道小编来了解一下吧!首先看一下异步加载缓存本地代码:publicclassAsyncBitmapLoader{/***内存图片软引用缓冲*/privateHas..._安卓如何使用imagecache
文章浏览阅读223次。Vue模板语法<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue...._vue 设置button enable
文章浏览阅读1.9k次。介绍伪协议前先介绍一下协议是什么。这里说到的协议不是指网络上的TCP/IP协议,而是操作系统提供支持的一种协议,类似标准协议HTTP, FTP。自定义协议叫做伪协议。如何注册一个伪协议?操作系统的协议都写在注册表[HKEY_CLASSES_ROOT]的KEY值下,我们在注册表内添加一项对我们软件支持的协议标志即可!_windows伪协议