首页 > 系统服务 > 详细

shell脚本学习------变量

时间:2021-05-28 10:05:45      阅读:12      评论:0      收藏:0      [点我收藏+]

------------恢复内容开始------------

一、自定义变量

变量:用一个固定的字符串表示一个不固定的内容

变量常见类型,shell变量如下4类
自定义变量
系统环境变量
位置参数变量
预先定义变量

1、定义变量   ‘变量名=变量值‘  不许使用数字命名,不许使用‘-‘命名

2、引用变量  ‘变量名 或  ${变量名}‘

3、查看变量  ‘echo $变量名‘ set显示所有变量,包括自定义变量和环境变量 

set | grep a

4、取消变量  ‘unset 变量名‘  变量作用范围:仅在当前shell脚本中有效

数值运算:

a=1
b=2
c=$a+$b
d=$a+$b
echo $c|bc
echo $d

运行结果:

技术分享图片

 

输出变量:首先ifconfig的参数内容如下:

技术分享图片

 

 输出特定的行变量

#!/usr/bin/bash
RX= ifconfig lo | grep "RX"
echo $RX

 技术分享图片

如果将变量变为字符串

#!/usr/bin/bash
RX2="ifconfig lo | grep RX"
echo $RX2

 技术分享图片

 

此时会当作字符串输出

如果输出变量

#!/usr/bin/bash
RX3=$(ifconfig lo | grep "RX")
echo $RX3

 技术分享图片

脚本示例:

#!/usr/bin/bash

ping -c1 192.168.56.11 &>/dev/null && echo "ip 192.168.56.11 ok"||echo "ip 192.168.56.11 error"

这段代码的意思为ping -c1 192.168.56.11,然后将执行输出结果丢弃,如果成功则打印ip 192.168.56.11 ok,否则打印ip 192.168.56.11 error,执行结果如下

 技术分享图片

我们可以使用变量改进

#!/usr/bin/bash

IP=192.168.56.11
ping -c1 ${IP} &>/dev/null && echo "ip ${IP} ok"||echo "ip ${IP} error"

 执行结果如下:

 技术分享图片

二、系统环境变量

1、定义环境变量   ‘export export变量,将自定义变量转换成环境变量‘,定义环境变量时,变成公共基础模块

 

export IP=‘192.168.0.1‘
echo $IP

 

2、引用环境变量  ‘$变量名 或 ${变量名}‘

3、查看环境变量  ‘echo $变量名  env|grep  Name‘

4、取消环境变量  ‘unset 变量名‘

5、变量作用范围  ‘在当前shell和子shell有效‘

echo $HOME
echo $UID

 使能project7.sh的变量,在project8.sh

加载系统环境变量

source /etc/init.d/functions

project7.sh

#!/usr/bin/bash

IP=192.168.56.11
ping -c1 ${IP} &>/dev/null && echo "ip ${IP} ok"||echo "ip ${IP} error"

project8.sh

#!/usr/bin/bash
source ./project7.sh
echo $UID
echo $PATH
echo $IP

执行结果如下:

技术分享图片

#!/usr/bin/bash

ping -c1 $IP $>/dev/null
if [ $? -eq 0 ];then
	echo -e "\033[32m ip $IP is OK! \033[0m"
else
	echo -e "\033[31m ip $IP is Err! \033[0m"
fi

三、位置参数变量

脚本参数传值:‘$1   $2   $3   $4   $5   $6   $7   $8   $9   $10‘

#!/usr/bin/bash

IP=$1
ping -c1 $IP>/dev/null
if [ $? -eq 0 ];then
	echo "$1 is OK"
else
	echo "$1 is Err!"
fi

 执行结果如下,带参数执行:

技术分享图片

 

 

 read读取参数

#!/usr/bin/bash

read -p "Ples is Ping Network IP:" ip

ping -c1 $ip &>/dev/null
if [ $? -eq 0 ];then echo "$ip is OK" else echo "$ip is Err" fi

  执行结果:

技术分享图片

 

 四、预先定义变量

‘$0‘   脚本名

‘$*‘  所有的参数

‘$@‘  所有的参数

‘$#‘  参数的个数

‘$$‘  当前进程的PID

‘$1‘  上一个后台进程的PID

‘$?‘  上一个命令的返回值为0表示成功

 

 

 

 

 

------------恢复内容结束------------

shell脚本学习------变量

原文:https://www.cnblogs.com/longlyseul/p/14820480.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!