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

宁夏网站建设费用地址销售类wordpress

宁夏网站建设费用地址,销售类wordpress,六安网站定制,wordpress 带宽购物shell脚本详解 一、Shell脚本概述1.1、shell脚本的概念1.2、shell脚本应用场景1.3.shell脚本能干什么1.4. shell的作用——命令翻译器#xff0c;“翻译官”1.5.shell脚本构成 二.编写shell脚本2.1 创建 shell 程序的步骤#xff1a;2.2shell脚本执行 三.重定向与管道操作3.1… shell脚本详解 一、Shell脚本概述1.1、shell脚本的概念1.2、shell脚本应用场景1.3.shell脚本能干什么1.4. shell的作用——命令翻译器“翻译官”1.5.shell脚本构成 二.编写shell脚本2.1 创建 shell 程序的步骤2.2shell脚本执行 三.重定向与管道操作3.1重定向——交互式硬件设备3.2重定向——重定向操作3.3经典案例3.4管道操作 四.shell变量及赋值4.1shell的变量4.2 自定义变量4.3经典案例 五. shell 脚本变量5.1交互式定义变量read5.2自定义变量export5.3 数值变量的运算 六.特殊的shell变量6.1 环境变量6.2 只读变量6.3 位置变量6.4 预定义变量6.5 使用awk值提取IP值6.6 全局变量与局域变量 七.shell脚本的符号说明 一、Shell脚本概述 1.1、shell脚本的概念 Shell是一个命令解释器它在操作系统的最外层负责直接与用户进行对话把用户的输入解释给操作系统并处理各种各样的操作系统的输出结果输出到屏幕反馈给用户。这种对话方式可是交互也可以是非交互式的,我们所输入的命令计算机是不识别的这时就需要一种程序来帮助我们进行翻译变成计算机能识别的二进制程序同时又把计算机生成的结果返回给我们。 shell脚本就是说我们把原来 linux 命令或语句放在一个文件中然后通过这个程序文件去执行时我们就说这个程序为 shell 脚本或 shell 程序我们可以在脚本中输入一系统的命令以及相关的语法语句组合比如变量流程控制语句等把他们有机结合起来就形成了一个功能强大的shell 脚本 将要执行的命令按顺序保存到一个文本文件给该文件可执行权限可结合各种shell控制语句以完成更复杂的操作 1.2、shell脚本应用场景 重复性操作交互性任务批量事务处理服务运行状态监控定时任务执行 1.3.shell脚本能干什么 自动化完成软件的安装部署如安装部署LAMP架构服务 自动化完成系统的管理如批量添加用户 自动化完成备份如数据库定时备份 自动化的分析处理如网站访问量 1.4. shell的作用——命令翻译器“翻译官” Linux系统中的Shell是一个特殊的应用程序它介于操作系统内核与用户之间充当了一个“命令解释器”的角色负责接收用户输入的操作指令命令并进行解释将需要执行的操作传递给内核执行并输出执行结果。 常见的 Shell 解释器程序有很多种使用不同的 Shell 时其内部指令、命令行提示符等方面会存在一些区别。通过/etc/shells 文件可以了解当前系统所支持的 Shell 脚本种类。 [rootlocalhost ~]# cat /etc/shells /bin/sh #是bash命令的软链接 (已经被/bin/bash所替换) /bin/bash 基准于GNU的框架下发展出的Shell。 /usr/bin/sh 已经被bash所替换。 /usr/bin/bash #centos和redhat系统默认使用bash shell /bin/tcsh #csh的增强版与csh完全兼容 整合了csh提供更多的功能。 /bin/csh #已经被/bin/bash 所替换 整合C shell,提供更多的功能注nologin:奇怪的shell这个shell可以让用户无法登录主机。 bash ( /bin/bash)是目前大多数Linux版本采用的默认Shell。 1.5.shell脚本构成 第一行为“#/bin/bash”,脚本申明默认解释器表示此行以下的代码语句是通过/bin/bash程序来执行。还有其他类型的解释器比如#/usr/bin/python、#!/usr/bin/expect 注释信息以“#”开头的语句表示为注释信息被注释的语句在脚本运行时不会被执行 可执行语句如echo命令用于输出 “ ” 之间的字符串 二.编写shell脚本 2.1 创建 shell 程序的步骤 第一步创建一个包含命令和控制结构的文件。 第二步修改这个文件的权限使它可以执行 # 使用 chmod x first.sh 第三步检测语法错误 第四步执行 ./first.sh案列 vim first.sh #!/bin/bash #This is my first Shell-Script. cd /boot echo “当前的目录位于:” pwd echo “其中以vml开头的文件包括” ls -lh vml* 2.2shell脚本执行 shell 脚本的执行通常有以下几种方式 方法一当前路径决定路径与相对路径下执行脚本要有执行权限 /home/first.sh 或者 ./first.sh 指定路径的命令要求文件必须有执行x权限方法二sh 、bash脚本文件路劲这种方式可以不对脚本文件添加执行权限 bash first.sh 或 sh first.sh 指定shell来解释脚本不要求文件必须有写x的权限 方法三source 脚本文件路劲(可以没有执行权限) source first.sh 方法四其他方法 sh first.sh 或者 cat first.sh |sh(bash)三.重定向与管道操作 3.1重定向——交互式硬件设备 用户通过操作系统处理信息的过程中包括以下几类交互设备文件  标准输入STDIN默认的设备是键盘文件编号为 0命令将从标准输入文件中读取在执行过程中需要的输入数据。 标准输出STDOUT默认的设备是显示器文件编号为 1命令将执行后的输出结果发送到标准输出文件。 标准错误STDERR默认的设备是显示器文件编号为 2命令将执行期间的各种错误信息发送到标准错误文件。交互设备文件 类型设备文件文件描述编号默认设备标准输入/dev/stdin0键盘标准输出/dev/stdout1显示器标准错误输出/dev/stderr2显示器 3.2重定向——重定向操作 类型操作符用途重定向输入从指定的文件读取数据重定向输出将标准输出结果 保存 到指定的文件并且覆盖原有内容将标准输出结果 追加 到指定的文件的尾部不覆盖原有内容标准错误输出2将错误信息 保存 到指定的文件并且覆盖原有内容2将错误信息 追加 到指定的文件的尾部不覆盖原有内容混合输出将标准输出、标准错误保存到同一文件中【表示等同于的意思】21将标准错误输出重定向到标准输出12把标准输出重定向到标准错误 3.3经典案例 1.定向输出 2.定向输入 3.重定向标准错误表示混合的意思 ls /tmp xxxx 1.txt 21//将错误信息2 也输入到正确信息保存的文件里ls /tmp xxxx 22.txt 12//将正确信息1 也输入到错误信息保存的文件里在编译源码包的自动化脚本中若要忽略 make、make install 等操作过程信息则可以将其定向到空文件/dev/null。#!/bin/bash # 自动编译安装 httpd 服务器的脚本cd /usr/src/httpd-2.4.25/ ./configure --prefix/usr/local/httpd --enable-so /dev/null make /dev/null make install /dev/null #/dev/null等同于make install /dev/null 213.4管道操作 管道pipe操作为不同命令之间的协同工作提供了一种机制位于管道符号“|”左侧的命令输出的结果将作为右侧命令的输入处理对象同一行命令中可以使用多个管道。 在 Shell 脚本应用中管道操作通常用来过滤所需要的关键信息。 $bash $表示系统提示符$ 表示此用户为普通用户超级用户的提示符是 bash是shell的一种是linux下最常用的一种shell $bash的意思是执行一个子shell此子shell为bash。经典案例 四.shell变量及赋值 4.1shell的变量 变量是用来临时保存数据的并且该数据时可以变化的任何一个语言都离不开变量如果某个内容需要多次使用并且会重复出现这样就可以使用变量了如果需要修改直接修改变量就可以了 常见 Shell 变量的类型包括自定义变量、环境变量、只读变量、位置变量、预定义变量。 4.2 自定义变量 变量的定义 Bash中的变量操作相对比较简单不像其他高级编程语言如C/C、Java等那么复杂。在定义一个新的变量时一般不需要提前进行声明而是直接指定变量名称并赋给初始值内容即可 格式变量名变量值等号两边没有空格。变量名称需以字母或下划线开头名称中不要包含特殊字符如、-、*、/、.、?、%、、#等变量名临时存放数据的地方 变量值临时的可变化的数据用echo查看和引用变量的值 通过在变量名称前添加前导符号“$”可以引用一个变量的值使用 echo 命令可以查看变量可以在一条 echo 命令中同时查看多个变量值。4.3经典案例 列1 ProductPython Version2.7.13 echo $Product$Version当变量名称容易和紧跟其后的其他字符相混淆时需要添加大括号“{}”将其括起来否则将无法确定正确的变量名称。对于未定义的变量将显示为空值 举例说明 列2 {}引用变量echo ${Product}2.5echo ${test}RMBecho选项 echo -n 表示不换行输出 使用echo -e输出转义字符将转义后的内容输出到屏幕上常用的转义字符如下 \c 不换行输出在”\c”后面不存在字符的情况下作用相当于echo -n \n 换行 \t 转义后表示插入tab即制表符【相当于每个字符与字符之前会有空四个字符】注\转义符跟在\之后的特殊符号将失去特殊含义变为普通字符。如$将输出“$”符号而不当做是变 量引用 取消定义 unset 变量名 【unset 清除变量值】 定义变量 变量名变量值 如num10 引用变量 $变量名 特殊操作 还有一些特殊的赋值操作可以更灵活地为变量赋值以便适用于各种复杂的管理任务 一.双引号” 双引号主要起界定字符串的作用特别是当要赋值的内容中包含空格时必须以双引号括起来其他情况下双引号通常可以省略 1、当内容中有空格 echo “hello world” echo nihao 2、当以变量的值进行赋值 [rootlocalhost ~]# version2 [rootlocalhost ~]# pyverpython $version [rootlocalhost ~]# echo $pyver python 2二. 单引号‘ 当要赋值的内容中包含$、“、\等具有特殊含义的字符时应使用单引号括起来。 在单引号的范围内将无法引用其他变量的值任何字符均作为普通字符看待。输入什么就显示什么 但赋值内容中包含单引号‘时需使用\’符号进行转义以免冲突。 [rootlocalhost ~]# test123 [rootlocalhost ~]# echo $test 123 [rootlocalhost ~]# echo $test $test三. 反撇号 反撇号主要用于命令替换允许将执行某个命令的屏幕输出结果赋值给变量。 反撇号括起来的范围内必须是能够执行的命令行否则将会出错 ls -lh which useradd 先通过 which useradd 命令查找出 useradd 命令的程序位置然后根据查找结果列出文件属性 date %Y-%m-%d [rootlocalhost ~]# timedate %T [rootlocalhost ~]# echo $time 04:23:22使用反撇号难以在一行命令中实现嵌套命令替换操作这时可以改用 “$()”来代替反撇号操作以解决嵌套的问题 rpm -qc $(rpm -qf $(which useradd)) 五. shell 脚本变量 各种Shell环境中都是用到了“变量”的概念。Shell变量用来存放系统和用户需要使用的特定参数值。 变量的作用 用来存放系统和用户需要使用的特定参数值 变量名 使用固定的名称由系统预设或用户定义 变量值 能够根据用户设置、系统环境的变化而变化 变量的类型 自定义变量 由用户自定义、修改和使用 特殊变量 环境变量只读变量位置变量预定义变量 环境变量由系统维护用于设置工作环境 只读变量 用于变量值不允许被修改的情况 位置变量通过命令行给脚本程序传递参数 预定义变量bash中内置的一类变量不能直接修改5.1交互式定义变量read -p提示用户的信息-n定义字符数-s不显示用户输入的内容常用于输入密码 read -s -p “input your password:” pass-t定义超时时间超过多长时间没输自动退出 从文件读取内容赋值给变量 [rootserver myscripts]# echo 192.168.100.100 ip.txt [rootserver myscripts]# cat ip.txt 192.168.100.100 [rootserver myscripts]# read -p input your ip: IP ip.txt [rootserver myscripts]# echo $IP 192.168.100.100stty -echo //关闭屏幕回显 stty echo //开启屏幕回显–变量的作用范围— 默认情况下新定义的变量只在当前的 Shell 环境中有效因此称为局部变量当进入子程序或新的子 Shell 环境时局部变量将无法再使用。 [rootlocalhost ~]# bash #进入子shell环境 [rootlocalhost ~]# [rootlocalhost ~]# echo $name[rootlocalhost ~]# echo $test5.2自定义变量export 为了使用户定义的变量在所有的子 Shell 环境中能够继续使用减少重复设置工作可以通过内部命令 export 将指定的变量导出为全局变量。 用户可以同时指定多个变量名称作为参数无须使用“$”符号变量名之间以空格分隔。 [rootlocalhost ~]#ProductBenet [rootlocalhost ~]#Version6.0 [rootlocalhost ~]# echo $Product $Version Benet 6.0 [rootlocalhost ~]# export Product Version #导出为全局变量 [rootlocalhost ~]# bash [rootlocalhost ~]# echo $Product $Version #子程序引用全局变量 Benet 6.0 [rootlocalhost ~]# exit使用 export 导出全局变量的同时也可以为变量进行赋值这样在新定义全局变量时就不需要提前进行赋值了 env查看用户当前环境变量 export ABC123 再次env就能看到了 export -n ABC 取消定义的全局变量变成局部变量5.3 数值变量的运算 常用运算符 加法、- 减法、 乘法、/除法、% 取余* expr 变量1 运算符 变量2 var$(expr 变量1 运算符 变量2) var$((变量1 运算符 变量2)) var$[变量1 运算符 变量2] let var变量1 运算符 变量2i相当于i$[$i 1]i是先赋值再运算【先用后加】 i--相当于i$[$i - 1]i是先运算再赋值【先用后减】 i1相当于i$[$i 1]【ii1】----扩充----- [rootzhang shell]# expr $[2 * 2] ##在中括号中可以直接用正常运算符六.特殊的shell变量 6.1 环境变量 环境变量指的是出于运行需要而由Linux系统提前创建的一类变量主要用于设置用户的工作环境包括用户宿主目录、命令查找路径、用户当前目录、登录终端等。环境变量由Linux系统自动维护会随着用户状态的改变而改变如果修改之后uname 重启就可以恢复原样 或者把之前的复制过来直接赋值变量由系统提前创建用来设置用户的工作环境配置文件/etc/profile 、~/.bash_profile常见的环境变量PWD,PATH.USER.SHELL.HOME 通过env命令进行查看都是设定好的 [rootzhang ~]# env XDG_SESSION_ID3 HOSTNAMEzhang versionwoaini SELINUX_ROLE_REQUESTED TERMxterm SHELL/bin/bash HISTSIZE1000 SSH_CLIENT192.168.10.16 50885 22 SELINUX_USE_CURRENT_RANGE OLDPWD/etc/yum.repos.d SSH_TTY/dev/pts/0 namewxd USERroot 6.2 只读变量 用于变量值不允许被修改的情况 [rootzhang ~]# namezhangzhihan [rootzhang ~]# nameyaoran [rootzhang ~]# readonly name [rootzhang ~]# echo $naem[rootzhang ~]# echo $name yaoran [rootzhang ~]# nameyaoran -bash: name: 只读变量 [rootzhang ~]# unset name -bash: unset: name: 无法反设定: 只读 variable6.3 位置变量 为了使用Shell脚本程序时方便通过命令行为程序提供参数bash引入了位置变量的概念。 表示为$n,n为1-9之间的数字 修正一下刚刚打错了嘿嘿 6.4 预定义变量 与定义变量是bash预先定义好的一类特殊变量只能使用不能创建新的 $# :表示命令行中位置参数的个数 $*: 表示所有未知参数的内容 $?: 表示前一条命令执行后的返回状态为0表示执行正确非0表示执行出现异常 $0: 表示当前执行的脚本或程序的名字 $$ 表示当前脚本的进程号案列 2. 6.5 使用awk值提取IP值 [rootzhang shell]# ipifconfig ens33|awk /netmask/{print $2} [rootzhang shell]# echo $ip 192.168.10.106.6 全局变量与局域变量 全局变量 全局变量用 export [rootzhang ~]# export Y30 [rootzhang ~]# echo $Y 30局部变量 [rootzhang ~]# a10 [rootzhang ~]# echo $a 10 [rootzhang ~]# bash [rootzhang ~]# echo $a[rootzhang ~]# 七.shell脚本的符号说明 1. #脚步中的第一句指明执行脚本使用的程序示例#!/bin/bash 2. #注释用于帮助信息或者忽略暂时不执行的语句示例# echo “hello” #this is a comment 3. $ 变量替换符号示例a123;echo $a 4. ${} 变量正规表达式避免变量名提前截断示例${13} 5. $num 位置参数示例$0,$1,…,${10} 6. $? 最后一个命令的推出状态一般0表示正确其他表示错误示例 if [ $?-ne 0 ]; thenecho “encounter error”7. $! 最后一个命令执行的后台命令的ID示例pid$!8. $$ 运行脚本进程的ID示例pid$$ 9. $* 传递到脚步的参数加双引号时相当于”$1$2 …”示例echo “Theparameters are $*” 10. $ 与$*相同加双引号相当于”$1”“$2” …示例a$ 11. $# 传递到脚本中的参数个数不包含$0参数示例 echo “theparameter number is $#” 12. $- 保存当前shell的设置信息如果结果中有i则表示为交互式shell示例 echo $- 13. ; 将多个指令写在同一行上的分隔符示例a123;echo $a 14. ;; 专用语case选项作用类似于C语言switch语句中的break示例 case${tao} ina) echo “a” ;;b) echo “b” ;;esac 15. . 一个表示当前目录两个表示上一级目录示例cd .. 16. , 类似于C语言中的逗号表达式示例let “t1((a53,b7-1,c15/3))”;echo $t1 17.! 表示逻辑运算法“非”示例if [ “$?”! “0” ]; thenecho “Execute error”exit 118. : 在bash中这是一个内建命令“什么都不干“但是返回状态值为0示例 :; echo$?; : f.out 相当于cat/dev/null f.out 19. ? 通配符匹配任意一个字符但是不包括null示例ls f?n 20. ‘’ 将其内容当作字符串$和通配符均不扩展或者转义示例a1; echo ‘$a’ 结果为$a 21. “” 将其内容作为字符串但是$可以扩展通配符不可以示例b”string”;echo “$b” 结果为string 22. 反引号在键盘数字1左边其中的字符串会当成命令执行示例adate;echo “$a” 23. () 指令群组将一串指令括起来执行时shell会产生subshell来执行它们示例(a1;echo$a) 24. (()) bash的内建功能用于算数运算示例a10;echo$a;((a)); echo $a 25. [] 同test作用相同用于表达式真假的判断示例 if [ 1-eq 2];thenecho‘kill me’26. [[]] bash对[]的加强版当中允许使用||和并且可以使用正则表达式示例read verif [[ $ver 5 $ $ver 9]]; thenecho“that’s it”fi 27. {} 指令群组类似于()但在当前shell中执行还可以用于字符串的组合示例 mkdir{userA, userB, userC} - {home, bin, data} 28. \….\ 正则表达式匹配单词的词首和词尾示例 find ‘\the\’file 29. 加法正则表达式中表示字符重复1~n次示例 grep ‘10\9’file 30. - 减法标准输入cd命令中表示上一次的工作目录示例 expr 1 -2 3; tar -zxfv -; cd – 31. * 乘法通配符表示任何字符一个字符重复0~n次示例let “var2*3”; ls zha*t; grep ‘a1[0-9]*’ 32. ** 次方运算示例let “var2**8” 33. / 除法目录分隔符示例expr 10/2;cd /home/zc 34. % 取余示例expr 10 %2 35. 赋值字符串比较在[]和[[]]中不同参见示例 a”we”;if [ $a ‘wee’ ]; then exit0 fi 36. 字符串比较同单个等号示例 a’we’if[[ $a w* ]]; thenecho“ok”fi 37. ! 字符串比较不等于示例 if [ “$a”! “$b” ]; then … 38. 字符串比较小于输入重定向示例 cattest suck.txt 39. 从标准输入中读取直到分隔符示例 110 eof 40. 输出重定向文件存在覆盖不存在则新建示例 lsout 21 41. 输出重定向文件存在追加不存在则创建示例 lsout 42. 后台执行工作符示例 tar zcvfdata.tar.gz data /dev/null 43. 逻辑与短路操作符示例 cp 1.txt2.txt rm 1.txt echo ‘success’ 44. | 管道操作符示例 cat file| grep ‘fan’ 45. || 逻辑或短路操作符示例 rm 1.txt|| echo ‘fail’ 46. ~ 根目录示例 cd ~ 47. ^ 正则表达式中匹配行的开头示例 grep ‘^home’file 48. \ 转义字符续行符号示例 echo “\$A$A\This is the first line”;
http://www.dnsts.com.cn/news/24602.html

相关文章:

  • 媒体网站怎么申请4399网页版入口
  • 北京网站如何做推广wordpress弹出搜索结果
  • 泰安网站建设有哪些软件开发要多少钱
  • 分析建设网站的可行性新片场视频素材
  • 北京优化营商公司排名seo
  • 影视视频网站怎么做优秀个人网站主页
  • 溧阳网站建设公司电商推广合同
  • 海淀深圳网站建设公司价格网页网站怎么做的吗
  • 企业文化经典句子潍坊网站搜索引擎优化
  • 外贸网站建设工作室网站建设公司如何做大
  • 网站ui设计之道wordpress主题不支持php7
  • 网站积分的作用大冶市城乡建设局网站
  • 做网站对企业的好处东莞人才市场招聘官网
  • 帮助中心网站怎么做网站建设考试知识点
  • 一个网络空间如何做两个网站个人如何注册网址
  • 网站首页鲁大师小型微利企业所得税优惠政策
  • 电商网站建设 问题 心得体会百度搜索引擎网址
  • 网站开发和运行 法律购物网站 建设
  • 网站做百度推广有没有效果佛山住建
  • 苏州企业网站建设定制wordpress能做出
  • 金品诚企网站建设高职网站建设专业书
  • 做ppt的图片素材网站有哪些花钱做的网站本人可以关闭吗
  • 网站 建设设计方案怎么做外汇返佣的网站
  • 免费的推文制作网站网站知名度
  • 厦门市建设局与管理局网站无锡网页制作报价
  • 宁波网站建设设计报告湛江网站设计
  • 杭州网站建设招聘四合一做网站
  • 做网站时需要注意什么qq人脸解冻自助网站
  • 成都购物网站设计织梦wordpress百度小程序
  • 好的网站开发培训客户关系管理系统的功能