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

做网站建设 个体经营 小微企业百度信息流广告位置

做网站建设 个体经营 小微企业,百度信息流广告位置,wordpress 地址栏,工程建设合同写在前面 好久没在项目内做自动化了,主要是现阶段在项目内做自动化收益不大,最近开发做batch run的正好缺人,我看了一下代码,就是通过代码读取jar包和远程服务器连接,然后通过shell脚本,向数据库插入数据&a…

写在前面

好久没在项目内做自动化了,主要是现阶段在项目内做自动化收益不大,最近开发做batch run的正好缺人,我看了一下代码,就是通过代码读取jar包和远程服务器连接,然后通过shell脚本,向数据库插入数据,平时用shell不多,今天重新巩固下shell,也希望为新学shell的同学提供整体知识框架。


shell基本概念

什么是shell

Shell 脚本(shell script),简单理解是一些命令的集合,运行中linux的shell中。业界所说的 shell 通常都是指 shell 脚本,需要注意的是,shell 和 shell script 是两个不同的概念。
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁,通过它来访问操作系统内核的服务,Shell 既是一种命令语言,又是一种程序设计语言。

shell与linux命令的区别

  1. Shell是一个命令解释器,它能够执行和解释一系列的命令。Linux命令则是通过Shell执行的。

  2. Shell更像是一个程序语言,它支持变量、条件语句、循环、函数、文件操作等高级功能。而Linux命令则是预定义的、特定的系统操作命令,比如ls、cp、mv等命令。

  3. Shell可以编写脚本程序,使其能够完成复杂的任务,而Linux命令则不能。

  4. Shell可以交互式地使用,也可以脚本化地使用。而Linux命令则只能在终端或者脚本中使用。

  5. Shell还提供了一些特殊的命令,比如bash、zsh等,可以改变Shell的行为。Linux命令则是相对固定的,不能改变其行为。

shell常见语法

$符号

$代表的是Shell中的变量,用于表示一个变量的值。例如,$PATH表示当前环境变量中的PATH值。

$(())用于算术运算,可以计算数学表达式的结果,并将结果赋给变量。例如:x=$((2+3)),计算2+3的结果,将结果5赋给变量x。

$()用于命令替换,可以执行命令并将命令的输出结果作为字符串返回。例如:x=$(ls),执行ls命令,将ls命令的输出字符串赋给变量x。

date命令

date命令用于查看和设置系统的日期和时间。

例如:

  1. 查看当前日期和时间,并以特定格式显示
date +"%Y-%m-%d %H:%M:%S"

在这里插入图片描述

  1. 设定时间,-1 day 表示当前日期前1天
date -d "-1 day" +%d # -d

数据类型

变量

shell中的变量可以用来存储数据,变量名通常以字母或下划线开头,也可以包含数字。变量赋值时,等号两边不能有空格。

例如:

name="Tom"

在函数内部定义的变量是局部变量,只有在函数内部才可以访问。而在函数外部定义的变量是全局变量,所有的函数都可以访问。

例如:

  1. 定义局部变量:
function test() {local name="Tom"echo "My name is $name"
}
  1. 定义全局变量:
name="Tom"
function test() {echo "My name is $name"
}

在这里插入图片描述

字符串操作

shell中可以对字符串进行各种操作,如拼接、截取、替换等。

例如:

  1. 拼接字符串:
str1="Hello"
str2="World"
str=$str1$str2
echo $str

在这里插入图片描述
2. 截取字符串:

str="Hello, World"
echo ${str:0:5}

在这里插入图片描述

  1. 替换字符串:
str="Hello, World"
echo ${str/Hello/Hi}

数字运算

shell中可以进行基本的数字运算,如加减乘除乘方等。可以使用expr命令或$(())语法。

例如:

  1. 使用expr命令进行运算:
result=`expr 2 + 3`
echo $result

在这里插入图片描述

  1. 使用$(())语法进行运算:
result=$(($num1*$num2))
echo $result

在这里插入图片描述

数组

shell中可以使用数组存储多个数据,数组使用小括号()来表示。

例如:

定义数组:

arr=("apple" "banana" "orange")

访问数组元素:

echo ${arr[1]}

获取数组长度:

echo ${#arr[@]}

预设变量

shell脚本中已经定义了一些预设变量,如 0 表示脚本名称, 0表示脚本名称, 0表示脚本名称,USER表示当前用户,$PWD表示当前目录等。

例如:

echo "当前脚本名称为:" $0
echo "当前用户为:" $USER
echo "当前目录为:" $PWD

特殊变量

shell脚本中还有一些特殊变量,如KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲表示传递给脚本的参数个数,*表示所有的参数列表。

例如:

$$ : Shell本身的PID(ProcessID)
$! : Shell最后运行的后台Process的PID 
$? : 最后运行的命令的结束代码(返回值)
$* : 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2$n"的形式输出所有参数
$@ :所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2""$n" 的形式输出所有参数
$# : 添加到Shell的参数个数
$0 : Shell本身的文件名
$1$n : 添加到Shell的各参数值。$1是第1参数、$2是第2参数…

与用户交互命令read

shell脚本也可以与用户进行交互,可以使用read命令实现。

例如:

读取用户输入:

read name
echo "Hello, $name"

在这里插入图片描述

逻辑判断

if 逻辑判断和参数

shell中可以使用if语句进行逻辑判断,一般会用到以下参数:

-e 判断文件或目录是否存在
-d 判断是否为目录
-f 判断是否为文件
-x 判断是否有执行权限

例如:

判断文件是否存在:

if [ -e "/var/log/syslog" ]; thenecho "syslog文件存在"
elseecho "syslog文件不存在"
fi

逻辑判断常用比较符

在if语句中经常会使用到比较符,例如:

  • eq:等于 equal to
  • ne:不等于 not equal to
  • gt:大于 greater than
  • lt:小于 less than
  • ge:大于等于 greater than or equal to
  • le:小于等于 less than or equal to

例如:

判断两个数字是否相等:

if [ $num1 -eq $num2 ]; thenecho "两个数字相等"
elseecho "两个数字不相等"
fi

case逻辑判断

shell中的case语句格式如下:

case 变量 in
value1)
command
;;
value2)
command
;;
value3)
command
;;
*)
command
;;
esac

可以用来进行多重逻辑判断,可以配合使用各种比较符。

例如:

根据用户输入的数字输出不同的信息:

read num
case $num in1) echo "你选择了1";;2) echo "你选择了2";;3) echo "你选择了3";;*) echo "请输入有效的数字";;
esac

在这里插入图片描述

循环

for 循环

for循环遍历数组:

arr=("apple" "banana" "orange")
for i in ${arr[@]}; doecho $i
done

${arr[@]} 是 shell 中的数组变量展开语法,它会将数组中的所有元素展开成一个列表,每个元素之间用空格分隔。
在这段脚本中,假设 arr 数组中有三个元素 “apple”、“banana” 和 “orange”,那么 a r r [ @ ] 就会展开成 " a p p l e " 、 " b a n a n a " 和 " o r a n g e " 这三个字符串,然后 f o r 循环会遍历这三个字符串并输出。更具体地说, {arr[@]} 就会展开成 "apple"、"banana" 和 "orange" 这三个字符串,然后 for 循环会遍历这三个字符串并输出。 更具体地说, arr[@]就会展开成"apple""banana""orange"这三个字符串,然后for循环会遍历这三个字符串并输出。更具体地说,{arr[@]} 展开后的结果相当于是 “ a r r [ 0 ] " 、 " {arr[0]}"、" arr[0]""{arr[1]}” 和 “${arr[2]}” 这三个字符串,因为 [@] 在数组变量中表示所有元素的列表。如果写成 ${arr[*]},那么展开结果就是 “apple banana orange”,其中所有元素用空格拼接起来。

在这里插入图片描述

while循环

num=1
while [ $num -lt 5 ]; doecho $numnum=$(($num+1))
done

在这里插入图片描述

中断和继续

在循环中可以使用break来中断循环,使用continue来跳过本次循环。

例如:

使用break跳出循环:

for i in 1 2 3 4 5; doif [ $i -eq 3 ]; thenbreakfiecho $i
done

在这里插入图片描述

使用continue跳过本次循环:

for i in 1 2 3 4 5; doif [ $i -eq 3 ]; thencontinuefiecho $i
done

在这里插入图片描述

函数

shell中可以定义函数来完成一些特定的任务,函数可以在脚本中任何位置定义。

例如:

定义一个函数:

function myFunc() {echo "Hello, World"
}myFunc

在这里插入图片描述

shell中的技巧

在shell脚本编写中,还有一些技巧可以提升效率,如:

  1. 使用 && 或者 || 来执行多条命令,可以在一些场景下节省一行代码.

    • 命令之间用&&隔开:若前面的命令执行成功,才会去执行后面的命令,这样可以保证所有的命令执行完毕后,执行过程都是成功的。
    • 命令之间用||或者|隔开: 只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。
    • 注意区分&表示希望脚本在后台运行的时候使用它
  2. ‘’ 表示强引用,""表示弱引用,``用于执行命令。例如:

    echo "我是$USER"
    echo '我是$USER'
    echo "我在`pwd`目录下"
    

    在这里插入图片描述

  3. ; 可以用来分隔多条命令,但是建议使用 && 或 || 来代替,可以更好地控制流程。

例如:

grep "xx" log.txt && cp log.txt log.bak

shellcheck

shellcheck 是一款实用的 shell脚本静态检查工具。

  1. 安装方式:
    在大多数发行版的包管理中,已经有shellcheck了,如在基于debian的机器上
apt-get install shellcheck

或者:

yum -y install epel-release
yum install ShellCheck

项目源码:https://github.com/koalaman/shellcheck

  1. 如何使用
    2.1 在网页上使用
    在网页 https://www.shellcheck.net 上,贴入你的脚本,运行检查即可
    2.2 在命令行中使用
    下载后,在命令行中调用 shellcheck yourscript 即可。
    2.3集成到编辑器中(推荐)
    推荐将shellcheck直接集成到日常编辑器中,这样就可以直接在编辑器中查看ShellCheck建议,以最快速度发现并修复问题。
    • Sublime 通过 SublimeLinter
    • VSCode 通过 vscode-shellcheck

实战演练

使用shell打印99乘法表,这个是面试常考题使用python或者java实现99乘法表,现在用shell实现

  1. 首先vi test99.sh,并写入脚本如下:
#!/bin/bash
for i in {1..9};do
for j in {1..9};doif [ $j -le $i ];thenecho -n "$j*$i=$((i*j)) "fidoneecho ""done

以上脚本的逻辑是嵌套循环ij如果j小于或者等于i,那么输出公式,公式的含义等号左边是引用ij的数值,等号右边是ij相乘的结果,内循环结束后,使用echo "",输出换行。

  1. 使用shell检查脚本
    在这里插入图片描述
  2. 更改脚本权限 chmod a+x test99.sh
  3. 最后执行结果如下:
    在这里插入图片描述
http://www.mmbaike.com/news/75466.html

相关文章:

  • 百度秒收录的网站seo是广告投放吗
  • 做明星网站打广告英语培训机构前十名
  • 同性恋色做视频网站sem推广竞价
  • b2c购物网站系统今天特大军事新闻
  • SEO网站布局优化成都seo技术经理
  • 今天31个省新增最新消息视频项目优化seo
  • 七牛云动静分离wordpress搜索引擎优化策略
  • 南京鼓楼做网站的公司百度推广网址是多少
  • 网站建设公司生存现状网络安全培训最强的机构
  • 购物网站的做东莞seo排名优化
  • 网站建设功能需求表宁德市
  • 广州正规网站制作公司seo网站建设是什么意思
  • 固安做网站的小程序流量点击推广平台
  • 商城类网站如何做西安seo全网营销
  • 临沂供电公司网站2345导航网址
  • 网站优化 西安百度公司名称
  • 网站设计哪里公司好东莞商城网站建设
  • 温州seo霸屏泰州seo网络公司
  • 对其网站建设进行了考察调研seo属于什么职业部门
  • 乌鲁木齐做网站网站快速排名互点软件
  • 沈阳网站建设莫道网络百度seo怎么收费
  • 网站怎么建设手机优化软件排行
  • 网站友情链接作用seo的范畴是什么
  • 常用的cms建站系统百度快速收录
  • 网站地图用什么格式seo合作代理
  • 接单做网站高端大气网站建设
  • dede茶叶网站模板宁波seo在线优化
  • 石材网站建设域名注册服务机构
  • 大连企业信息查询系统官网杭州seo教程
  • 橙子建站验证码是诈骗吗seo优化关键词排名