千家信息网

有哪些Linux shell知识点

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,本篇内容主要讲解"有哪些Linux shell知识点",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"有哪些Linux shell知识点"吧!实际上Shell
千家信息网最后更新 2025年02月02日有哪些Linux shell知识点

本篇内容主要讲解"有哪些Linux shell知识点",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"有哪些Linux shell知识点"吧!

实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。

引言

SHELL在处理一些问题的时候有得天独厚的优势,快捷方便,学会了还可以显摆显摆,当然了,shell的语法有点坑爹,没有系统的学过,只能一点一点的积累。

今天这个是在实现一个刷新数据库数据的脚本的时候碰到的一些知识点,刷新的时候用到了正则匹配、数学运算、比较等等。

shell中的数组

数组的定义

arr=(1 2 3 4 5)arr=(燕睿涛 yrt lulu yanruitao)arr=('^[0-9]+$' '^yrt\.(\d+)\.log$')arr=( "燕睿涛" \  "yanruitao" \  "today is a good day!")

数组的使用

len=${#arr[@]} #返回的是数组元素的个数echo ${arr[0]} #数组中的第一个元素,这个和其他语言的数组类似,下表从0开始echo ${arr[2]} #数组中的第3个元素

实际的例子

[yanruitao@boss_runtime sh]$ arr=(> "燕睿涛"> "http:\/\/www\.baidu\.com\/(\d+)\.html"> "yanruitao"> "lulu"> "yrt"> )[yanruitao@boss_runtime sh]$ echo ${#arr[@]}5[yanruitao@boss_runtime sh]$ echo ${arr[1]}http:\/\/www\.baidu\.com\/(\d+)\.html[yanruitao@boss_runtime sh]$ echo ${arr[0]}燕睿涛[yanruitao@boss_runtime sh]$ echo ${arr[5]}[yanruitao@boss_runtime sh]$

shell中的大小比较

#第一种(())if((6 <8)); then echo "yes 燕睿涛"; fi #输出--yes 燕睿涛if(($a>8)); then echo "yes 燕睿涛"; fiif(($a<=$b)); then echo "yes 燕睿涛"; fi#第二种[] [[]]if [ 2 -gt 1 ]; then echo "iforever 燕睿涛"; fiif [[ 'abc' > 'ab' ]]; then echo "iforever 燕睿涛"; fi #iforever 燕睿涛if [[ 2 < 10 ]]; then echo "iforever 燕睿涛"; fi #无输出if [[ 2 -lt 10 ]]; then echo "iforever 燕睿涛"; fi #iforever 燕睿涛

可以看到上面这几种还是有些规律的:

双小括号[(())]里面是可以直接使用大于小于号进行比较(>、<、<=、>=),而且不需要"坑爹"的空格,用于数学计算
单中括号([])里面比较必须使用-gt、-lt、-ne、-eq这些运算符,而且必须要有严格的空格要求
双中括号([[]])里面比较可以使用>、<、-gt、-lt......这两种格式,但是还是必须要有严格的空格要求,而且双中括号中的>、<对类似于字符串的比较,所以在使用的时候需要注意

shell中的括号

#看看小括号的用法,首先是在for循环里面,相当于还是数学计算[yanruitao@boss_runtime ad]$ for((a=0;a<10;a++))> do> echo $a> done0123456789#对变量进行++,还是相当于数序运算[yanruitao@boss_runtime ad]$ i=1[yanruitao@boss_runtime ad]$ echo $i1[yanruitao@boss_runtime ad]$ let i++[yanruitao@boss_runtime ad]$ echo $i2[yanruitao@boss_runtime ad]$ ((i++))[yanruitao@boss_runtime ad]$ echo $i3#数学运算[yanruitao@boss_runtime ad]$ echo 1+21+2[yanruitao@boss_runtime ad]$ echo $((1+2))3#单括号里面是一个命令组,括号中的命令将会新开一个shell顺序执行,所以这个里面相当于一个封闭的空间,里面的变量什么的不能被剩余代码使用[yanruitao@boss_runtime ad]$ a=1[yanruitao@boss_runtime ad]$ (a=3;echo $a)3[yanruitao@boss_runtime ad]$ echo $a1#括号中and的使用if [[ -n "$ret" && $ret -gt 123 ]]... #[[]]双中括号中只能使用&&,不能使用-aif [ -n "$ret" -a $ret -gt 123 ]...  #[]单中括号中只能使用-a,不能使用&&if(($ret)) && (($ret >123 ))...  #(())双小括号使用&&

shell中函数的定义

function getId(){ local url=$1 #local限定了变量url的作用域只在函数里面,不然会污染全局的作用域  ereg="http:\/\/www\.baidu\.com\/\([0-9]\+\)\.html"  local ret=$(expr $url : $ereg)  if [[ -n "$ret" && $ret -gt 0 ]]; then #当ret为null时使用[]会报错,-n这里的双引号一定要加上,不然当$ret为null时,一直返回真   echo $ret    return 0  fi  return 1}[yanruitao@boss_runtime sh]$ echo $?0[yanruitao@boss_runtime sh]$ getId "http://www.baidu.com/123.htl"[yanruitao@boss_runtime sh]$ echo $?1[yanruitao@boss_runtime sh]$ getId "http://www.baidu.com/123.html"123[yanruitao@boss_runtime sh]$ echo $?0

函数的整体形式如上面的例子,这里面注意两点:

首先就是返回值,通过return的返回值只能是整数,并且在调用完成之后使用echo $?可以查看返回值。
要使用赋值的形式需要有echo,就像ret=$(getId "http://www.baidu.com.1234.html"),只有echo的值会传递给ret变量。

杂项知识点

字符串转数组

[yanruitao@boss_runtime sh]$ str="燕睿涛 lulu yrt yanruitao"[yanruitao@boss_runtime sh]$ arr=($str)  #这一步将字符串转化为了数组[yanruitao@boss_runtime sh]$ echo ${arr[*]}燕睿涛 lulu yrt yanruitao[yanruitao@boss_runtime sh]$ echo ${#arr[@]}4

常用判断标志
[ -z STRING ] "STRING" 的长度为零则为真。
[ -n STRING ] or [ STRING ] "STRING" 的长度为非零 non-zero则为真。
[ -d FILE ] 如果 FILE 存在且是一个目录则为真。
[ -a FILE ] 如果 FILE 存在则为真。

linux后台运行相关

& #在一个命令的最后加上这个命令,可以将该命令放到后台执行./update.sh 100 500 &ctrl + z #讲一个正在前台执行的命令放到后台,并且处于暂停状态jobs #查看当前后台运行的命令jobs -l #可以显示所有后台任务的PID[yanruitao@boss_runtime sh]$ jobs -l[1]  9681 Running         ./t.sh 100 300 &[2]  9683 Running         ./t.sh 100 300 &[3]- 9685 Running         ./t.sh 100 300 &[4]+ 9688 Running         ./t.sh 100 300 &fg  #把后台中的命令调至前台继续运行,如果后台有多个命令可以使用`fg %jobnumber`将选中命令调出[yanruitao@boss_runtime sh]$ jobs -l[2] 10033 Running         ./t.sh 100 300 &[3] 10035 Running         ./t.sh 100 300 &[4]- 10037 Running         ./t.sh 100 300 &[5]+ 10039 Running         ./t.sh 100 300 &[yanruitao@boss_runtime sh]$ fg %2./t.sh 100 300  bg  #讲一个在后台暂停的命令变成在后台继续执行。同样,如果有多个命令,可以使用bg %jobnumber[yanruitao@boss_runtime sh]$ jobs -l[1]- 11655 Running         ./t.sh 100 300 &[2]+ 11662 Running         ./t.sh 100 300 &[yanruitao@boss_runtime sh]$ fg %1./t.sh 100 300^Z[1]+ Stopped         ./t.sh 100 300[yanruitao@boss_runtime sh]$ jobs -l[1]+ 11655 Stopped         ./t.sh 100 300[2]- 11662 Running         ./t.sh 100 300 &[yanruitao@boss_runtime sh]$ bg %1[1]+ ./t.sh 100 300 &[yanruitao@boss_runtime sh]$ jobs -l[1]- 11655 Running         ./t.sh 100 300 &[2]+ 11662 Running         ./t.sh 100 300 &kill #终止进程kill %num #通过jobs查看的job号,进行杀死kill pid #通过进程号杀掉进程ctrl + C #终止当前前台的进程

到此,相信大家对"有哪些Linux shell知识点"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

命令 后台 数组 括号 知识 知识点 语言 变量 数学 时候 编程语言 进程 中括号 编程 运算 元素 函数 前台 字符 字符串 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 奉贤区散射网络技术代理品牌 警惕网络安全意识 河南新乡软件开发 计算机软件开发与应用课程表 江西营销软件开发哪家好 华为服务器风扇报警怎么关 网络安全意识如何培养 汉语语音偏误数据库 宿城区工业网络技术解决方案 保障重要基础网络安全 数据库中表如何备份 直播软件软件开发 无线网络安全连接技巧 网络游戏背包的数据库 wow新服务器 黑色沙漠2022季节服务器结束 新型网络安全配置 英语网络安全知识点 咪咪扑克软件开发商 数据中心交换机连接多少台服务器 数据库中的水平和垂直分解 网络安全 岗位级别有哪些 如何理解网络安全形势政策 政法委网络安全讲座 天速互联网络科技有限公司 迅雷7代理服务器 滨州软件开发教学课程在线学习 软件开发工作十年后还有前途吗 河南信阳软件开发培训学校 宁波酷迪互联网科技有限公司
0