wordpress 重定向过多,外贸seo优化方法,微信广告投放收费标准,俄罗斯网站推广前言#xff1a;本博客仅作记录学习使用#xff0c;部分图片出自网络#xff0c;如有侵犯您的权益#xff0c;请联系删除 变量#xff1a; bash作为程序设计语言和其它高级语言一样也提供使用和定义变量的功能
预定义变量、环境变量、自定义变量、位置变量
一、自定义变… 前言本博客仅作记录学习使用部分图片出自网络如有侵犯您的权益请联系删除 变量 bash作为程序设计语言和其它高级语言一样也提供使用和定义变量的功能
预定义变量、环境变量、自定义变量、位置变量
一、自定义变量
1、定义
在 Bash 中定义变量非常简单不像其他高级编程语言如 C/C、Java 等那么复杂。在定义一个新变量时一般不需要提前声明只需直接指定变量名称并赋值即可 变量名称值
变量名称只能由字母数字下划线组成不能以数字开头 注意应该让变量名称有意义 赋值符号 前后不能有空格 值所有的字符串和数字都可以
2、查看和引用变量的值
引用变量: $变量名或${变量名}。
当变量名称容易和紧跟其后的其他字符相混淆时需要添加大括号 {} 将其括起来否则将无法确定正确的变量名称。对于未定义的变量将显示为空值 [rootcentos ~]# a100[rootcentos ~]# echo $a100[rootcentos ~]# echo $aa# 这里输出为空因为解释器认为$aa是变量使用大括号扩起:[rootcentos ~]# echo ${a}a100a
查看变量echo $变量名 set所有变量包括自定义变量和环境变量
取消变量unset 变量名 仅在当前shell中有效
作用范围仅在当前shell中生效
3、echo选项 echo -n # 表示不换行输出echo -o # 输出转义字符将转义后的内容输出到屏幕上
常用的转义字符 \c # 不换行输出 \n # 换行\t # 插入tab即制表符
4、取消定义
使用unset命令可取消变量的定义
二、特殊变量
特殊变量含义$0脚本的文件名$1,$2,...脚本的第n个参数$#脚本参数的个数$?最后一个命令的退出状态码$$当前 Shell 进程的 PID$USER当前用户的用户名$HOME当前用户的主目录$*获取所有参数并将每个参数作为单独字符返回$将所有参数包括空白符一起作为一个字符返回 [rootcentos ~]# lsanaconda-ks.cfg Desktop Documents Downloads initial-setup-ks.cfg Music Pictures Public Templates Videos[rootcentos ~]# echo $?0[rootcentos ~]# vim variable.sh#!/bin/bashecho The current process is $$#输出当前进程的PID#这个PID就是variable.sh脚本执行时生成的进程的PID[rootcentos ~]# sleep 3000 # 符号的意思是把命令放入后台执行[1] 52547[rootcentos ~]# echo $!52547
三、环境变量
shell在开始执行时已经定义好的 env 查看所有环境变量 set 查看所有变量
环境变量拥有可继承性export之后就拥有继承性 export 导出变量(作用范围)
临时生效 [rootnewrain ~]# IPADDR192.168.1.1 [rootnewrain ~]# echo $IPADDR 192.168.1.1
永久生效
写到4个登陆脚本中 ~/.bashrc ~/profile 更好放在/etc/profile.d/* 下建立独立的环境
变量配置文件
常用环境变量USER UID HOME HOSTNAME PWD PS1 PATH
PATH:存储所有命令所在的路径
四、变量运算
1、基本运算
算式运算符: 、-、*、/、()、%取余取模
运算方式$(()) $[] expr # $(())方式[rootcentos ~]# echo $(( 52-(3*2)/5 ))6# $[]方式[rootcentos ~]# echo $[ 52 - (3*2)/5 ]6# expr方式运算符号两边的空格必须写;不能做浮点运算[rootcentos ~]# expr 5 38[rootcentos ~]# expr 5353[rootcentos ~]# expr 5 3.0expr: non-integer argument
2、乘法运算 [rootcentos ~]# expr 5 \* 840[rootcentos ~]# expr 5 * 840
2、随机数
为什么取余时需要1是因为在取余时如果被整除那么余数会是0这样就不在限定范围内了 # 取1-6之间的随机数echo $(( RANDOM % 6 1 ))# 随机生成从1~50之间的数echo $(($RANDOM%501))
3、浮点运算
bash本身不能做小数计算需要bc命令转换
bc 是一种用于数学计算的命令行工具在大多数 Linux 和 Unix 系统中都是默认安装的。它支持高精度的小数运算可以用于 Shell 脚本中进行小数运算 # 计算2乘以4[rootcentos ~]# echo 2*4.1 | bc8.2# 计算2的4次方[rootcentos ~]# echo 2^4 | bc16# 计算6除以4的结果并且结果保留两位小数; scale:精度[rootcentos ~]# echo scale2;6/4 | bc1.50
示例 # 计算我的信用卡一年的利息假设我欠10000块钱# cat rent.sh#!/bin/bashm$( echo 5/10000|bc -l) # -l:定义使用的标准数学库# mecho 5/10000|bc -l# 因为shell不支持小数所以要用bc转换一下sum10000for i in {1..365}dosum$(echo $sum$sum*$m | bc )echo $sumdoneecho $sum# 简单例子:#!/bin/bash sum1for i in {1..20}dosum$(echo $sum1|bc)echo $sumdone
五、转义、单引号、双引号、单反引号
当一个字符被引用时其特殊含义被禁止使用转义把有意义的变的没意义把没意义的变的有意义比如\n、\t [rootcentos ~]# echo -e 5\\n6\n75\n67
完全引用 //强引 硬引
部分引用 //弱引 软引
单反引号 在 Shell 脚本中用于执行命令并将命令的输出结果作为字符串返回 [rootcentos ~]# num1[rootcentos ~]# echo 高三1班有$num个女生高三1班有1个女生[rootcentos ~]# echo 高三1班有$num个女生高三1班有1个女生[rootcentos ~]# echo 高三1班有$num个女生高三1班有$num个女生[rootcentos ~]# current_datedate[rootcentos ~]# echo Current date and time: $current_dateCurrent date and time: Thu Aug 1 11:35:43 CST 2024
六、read读取用户标准输入
1、read命令
read功能就是读取键盘输入的值并赋给变量
语法read [-options] [variable_name] 其常用参数如下
常用选项含义-p prompt显示提示符提示用户输入-a array将输入的数据按照空格分割存储到数组中。-d delimiter指定输入的结束符。-r取消对反斜杠的特殊处理默认情况下反斜杠用于转义特殊字符。-n num_chars指定读取的字符数。-s静默模式用户输入不会显示在屏幕上。-t timeout设置超时时间在超时后 read 命令会自动退出。
2、基本用法 # read -t 5 var# echo var5# read -p 提示信息: var提示信息dsfd# echo vardsfd
read后面的变量var可以只有一个也可以有多个这时如果输入多个数据则第一个数据给第一个变量第二个数据给第二个变量如果输入数据个数过多则最后所有的值都给最后一个变量 read -p 后面的内容为提示信息需要打印出来 -s 后面的内容是加密信息不要输出 -t 超时时间
下面示例几个简单的例子 [rootcentos ~]# cat read.sh #!/bin/bashread first second thirdecho the first parameter is $firstecho the second parameter is $secondecho the third parameter is $third[rootcentos ~]# bash read.shone two threethe first parameter is onethe second parameter is twothe third parameter is three[rootcentos ~]# cat test.sh # read testread -p 请输入你的银行卡帐号 numread -p 请在五秒内输入密码 -t 5 passecho 你的密码错误!echo $num |mail -s card num rootecho $pass|mail -s card pass root# 自定义程序结果的正确[rootcentos ~]# cat test1.sh #!/bin/bashread -p Do you want to continue [Y/N]? answercase $answer inY|y)echo fine ,continue;;N|n)echo ok,good bye;;*)echo error choice;;esacexit 0
七、其他技巧
1、取消屏幕回显 # stty -echo# stty echo
2、变量长度 # a123# echo ${#a}3
3、变量嵌套(扩展)
表示(变量)$var的长度 # eval 执行字符串内的可执行命令[rootnewrain ~]# namekobe[rootnewrain ~]# kobe24[rootnewrain ~]# eval echo $${name}24# 先获取name的值通过再次构造echo命令使用eval再一次执行语句就达到我们的目的
简单实例 [rootnewrain shell]# cat d.sh#!/bin/bashecho 1.配置yum客户端echo 2.添加A记录echo 3.一键安装lamp环境echo 4.一键配置静态IPread -p 请选择你想使用的功能(1/2/3/4): numcon_ip(){echo 这是配置IP地址的小工具}case $num in1):;;2):;;3):;;4)con_ip;;*):;;esac
八、练习
1、练习1
编写一个shell脚本用于搜集其执行主机的信息打印结果如下: [rootcentos ~]# ./test.sh 2012年 05月 24日 星期四 17:07:45 CST 当前的用户为 root 当前用户的宿主目录为 /root 用户的标识为 0 主机名称为 newrain 网卡的IP地址为 192.168.1.106
解题 [rootcentos ~]# vim ./test.sh#!/usr/bin/bash# 获取主机信息timedate %y年%m月%d日-%H:%Mipifconfig ens33 | grep netmask | awk {print $2}echo 现在的时间是: $timeecho 当前的用户是: $USERecho 当前的用户标识是: $UIDecho 当前的主机名称是: $HOSTNAMEecho 当前可用网卡IP是: $ip[rootcentos ~]# bash test.sh 现在的时间是: 24年08月01日-00:47当前的用户是: root当前的用户标识是: 0当前的主机名称是: localhost.localdomain当前可用网卡IP是: 10.0.0.2
取根分区剩余空间 # NR2表示取第二行[rootcentos ~]# df -h /dev/sda2 |awk NR2{print $4}1.9G
取当前系统剩余内存 [rootcentos ~]# echo 现在的剩余内存是:free -m |awk NR2{print $4}现在的剩余内存是:1154
取当前系统剩余内存 # /-d指定分隔符-f指定显示区域3-第三列以后(包括第三列)[rootcentos ~]# echo 现在cpu的uptime |cut -d, -f3-现在cpu的 load average: 0.00, 0.01, 0.05[rootcentos ~]# echo 现在cpu的uptime |awk -F, {print $4,$5,$6}现在cpu的 0.01 0.05
2、练习2
编写一个脚本实现显示时间和日期, 列出所有登录系统的用户,并且给出系统的当前时间以及已经运行多长时间.最后脚本还会将这些信息写入一个日志文件 [rootcentos ~]# vim information.sh#!/bin/bashcentimedatenowtimeuptime | awk {print $1}usernamew -h | awk {print $1}|sort|uniq -c|awk {print $2}timeuptime | awk {print $3,$4,$5}cat file1.txt EOFecho 时间:$centimeecho 系统的当前时间是: $nowtimeecho 系统已运行的时长: $timeecho 系统登录的用户有: $usernameEOF[rootcentos ~]# touch file1.txt[rootcentos ~]# bash information.sh [rootcentos ~]# cat file1.txt echo 时间:Thu Aug 1 01:07:05 CST 2024echo 系统的当前时间是: 01:07:05echo 系统已运行的时长: 2:25, 2 users,echo 系统登录的用户有: root
致谢
在此我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者如果文章中有任何错误欢迎留言指正。 学习永无止境让我们共同进步
文章转载自: http://www.morning.jcyrs.cn.gov.cn.jcyrs.cn http://www.morning.kjcfz.cn.gov.cn.kjcfz.cn http://www.morning.dqkcn.cn.gov.cn.dqkcn.cn http://www.morning.kgxrq.cn.gov.cn.kgxrq.cn http://www.morning.rptdz.cn.gov.cn.rptdz.cn http://www.morning.znqztgc.cn.gov.cn.znqztgc.cn http://www.morning.knngw.cn.gov.cn.knngw.cn http://www.morning.grjh.cn.gov.cn.grjh.cn http://www.morning.fnrkh.cn.gov.cn.fnrkh.cn http://www.morning.hlyfn.cn.gov.cn.hlyfn.cn http://www.morning.qfcnp.cn.gov.cn.qfcnp.cn http://www.morning.fjlsfs.com.gov.cn.fjlsfs.com http://www.morning.zhnyj.cn.gov.cn.zhnyj.cn http://www.morning.rkwlg.cn.gov.cn.rkwlg.cn http://www.morning.rsdm.cn.gov.cn.rsdm.cn http://www.morning.dkgtr.cn.gov.cn.dkgtr.cn http://www.morning.lmhwm.cn.gov.cn.lmhwm.cn http://www.morning.kwrzg.cn.gov.cn.kwrzg.cn http://www.morning.zzjpy.cn.gov.cn.zzjpy.cn http://www.morning.paxkhqq.cn.gov.cn.paxkhqq.cn http://www.morning.gqtzb.cn.gov.cn.gqtzb.cn http://www.morning.wcyr.cn.gov.cn.wcyr.cn http://www.morning.dmcqy.cn.gov.cn.dmcqy.cn http://www.morning.rqlzz.cn.gov.cn.rqlzz.cn http://www.morning.mlhfr.cn.gov.cn.mlhfr.cn http://www.morning.qxlyf.cn.gov.cn.qxlyf.cn http://www.morning.bgpch.cn.gov.cn.bgpch.cn http://www.morning.qjlnh.cn.gov.cn.qjlnh.cn http://www.morning.dkslm.cn.gov.cn.dkslm.cn http://www.morning.qlznd.cn.gov.cn.qlznd.cn http://www.morning.rhnn.cn.gov.cn.rhnn.cn http://www.morning.khzml.cn.gov.cn.khzml.cn http://www.morning.rltw.cn.gov.cn.rltw.cn http://www.morning.cnlmp.cn.gov.cn.cnlmp.cn http://www.morning.ogzjf.cn.gov.cn.ogzjf.cn http://www.morning.pjrql.cn.gov.cn.pjrql.cn http://www.morning.xkzmz.cn.gov.cn.xkzmz.cn http://www.morning.gqbtw.cn.gov.cn.gqbtw.cn http://www.morning.kxrhj.cn.gov.cn.kxrhj.cn http://www.morning.qhfdl.cn.gov.cn.qhfdl.cn http://www.morning.gjzwj.cn.gov.cn.gjzwj.cn http://www.morning.wdnkp.cn.gov.cn.wdnkp.cn http://www.morning.qbwtb.cn.gov.cn.qbwtb.cn http://www.morning.gxfzrb.com.gov.cn.gxfzrb.com http://www.morning.hsjfs.cn.gov.cn.hsjfs.cn http://www.morning.lmjtp.cn.gov.cn.lmjtp.cn http://www.morning.rcgzg.cn.gov.cn.rcgzg.cn http://www.morning.gnkbf.cn.gov.cn.gnkbf.cn http://www.morning.wcyr.cn.gov.cn.wcyr.cn http://www.morning.ljzgf.cn.gov.cn.ljzgf.cn http://www.morning.pmptm.cn.gov.cn.pmptm.cn http://www.morning.wcjk.cn.gov.cn.wcjk.cn http://www.morning.gbtty.cn.gov.cn.gbtty.cn http://www.morning.pzjrm.cn.gov.cn.pzjrm.cn http://www.morning.bpmfg.cn.gov.cn.bpmfg.cn http://www.morning.tqbqb.cn.gov.cn.tqbqb.cn http://www.morning.chmkt.cn.gov.cn.chmkt.cn http://www.morning.qxjck.cn.gov.cn.qxjck.cn http://www.morning.zcwtl.cn.gov.cn.zcwtl.cn http://www.morning.cwyfs.cn.gov.cn.cwyfs.cn http://www.morning.bftr.cn.gov.cn.bftr.cn http://www.morning.mmxt.cn.gov.cn.mmxt.cn http://www.morning.hjssh.cn.gov.cn.hjssh.cn http://www.morning.mkygc.cn.gov.cn.mkygc.cn http://www.morning.dqgbx.cn.gov.cn.dqgbx.cn http://www.morning.knlgk.cn.gov.cn.knlgk.cn http://www.morning.wmqrn.cn.gov.cn.wmqrn.cn http://www.morning.mmhyx.cn.gov.cn.mmhyx.cn http://www.morning.fhrgk.cn.gov.cn.fhrgk.cn http://www.morning.rfjmy.cn.gov.cn.rfjmy.cn http://www.morning.xxwfq.cn.gov.cn.xxwfq.cn http://www.morning.ydzly.cn.gov.cn.ydzly.cn http://www.morning.jmmzt.cn.gov.cn.jmmzt.cn http://www.morning.drbwh.cn.gov.cn.drbwh.cn http://www.morning.xjqhh.cn.gov.cn.xjqhh.cn http://www.morning.mgbcf.cn.gov.cn.mgbcf.cn http://www.morning.xppj.cn.gov.cn.xppj.cn http://www.morning.plcyq.cn.gov.cn.plcyq.cn http://www.morning.gcxfh.cn.gov.cn.gcxfh.cn http://www.morning.pgcmz.cn.gov.cn.pgcmz.cn