shell基础篇(2️⃣)

12 篇文章 0 订阅
5 篇文章 0 订阅

五、shell变量
什么是变量?
变量的类型
变量的定义方式
变量的运算
变量“内容”的删除和替换
Shell 变量?用一个特定的字符串去表示不固定的内容
变量的类型:

  1. 自定义变量
    定义变量: 变量名=变量值 变量名必须以字母或下划线开头,区分大小写 ip1=192.168.18.185
    引用变量: $变量名 set(所有变量:包括自定义变量和环境变量)
    取消变量: echo $变量名
    作用范围: 尽在当前shell中有效
    例子:
#!/bin/bash
ip=152.136.123.149
ping -c1 $ip &>/dev/null && echo "$ip is up" || echo "$ip is down!"

#!/bin/bash
ip=152.136.123.149

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

#!/bin/bash
echo "请输入你要测试的IP"
read ip

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


#!/bin/bash
read -p "请输入你要ping的IP" ip

ping -c1 $ip &>/dev/null
if [ $? -eq 0 ]; then
        echo "$ip is up"
else
        echo "$ip is down"
fi
#!/bin/bash

ping -c1 $1 &>/dev/null
if [ $? -eq 0 ]; then
        echo "$1 is up"
else
        echo "$1 is down"
fi

  1. 环境变量

定义环境变量: 方法一 export back_dir2=/home/backup
方法二 export back_dir1 将自定义变量转换成环境变量
引用环境变量: $变量名 或 ${变量名}
查看环境变量: echo $变量名 env 例子:env | grep back_dir2
取消环境变量: unset 变量名
变量作用范围:在当前shell和子shell有效

C语言局部变量 vs 全局变量
Shell自定义变量 vs 环境变量
echo $USER			echo $UID      echo $MAIL    echo $AHELL   
echo $HOME			echo $PWD
  1. 位置变量
$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}
  1. 预定义变量
$0 		脚本名
$*		所有的参数
$@		所有的参数
$#		参数的个数
$$		当前进程的PID
$!		上一个后台的进程PID
$?		上一个命令的分返回值0表示成功

示例:

#vim test.sh
echo "第一个参数$1"
echo "第二个参数$2"
echo "所有参数是:$@"
echo "所有参数是:$*"
echo "所有参数个数是:$#"
echo "当前进程的PID是:$$"
echo '$1'=$1
echo '$2'=$2
echo '$@'=$@
echo '$*'=$*
echo '$#'=$#
echo '$$'=$$

了解 ∗ 和 *和 @的区别

#vim pp.sh
#!/bin/bash
ping -c2 $1 &>/dev/null
if [ $? = 0 ];then
        echo "host $1 is ok"
else
        echo "host $1 is fail"
fi
#chmod u+x pp.sh

现在做个小测试:
现在写一个脚本,让他ping ip.txt文件内的ip,如果ping通则告诉我is up ;如果ping不同则告诉我is down。另外在脚本文件里面添加一些脚本使其在没有用户参数时提示操作者添加参数、如果添加的不是文件就报错。
Ip.txt文件内的内容:
152.136.123.149
www.baidu.com
192.168.12.231
答案:

#!/bin/bash
#如果用户没有加参数

if [ $# -eq 0 ];then
        echo "usage: `basename $0` file"
        exit
fi
if [ ! -f $1 ];then
        echo "erro file"
        exit
fi
for ip in `cat $1`
do
        ping -c1 $ip &>/dev/null
        if [ $? -eq 0  ];then
                echo "$ip is up"
        else
                echo "$ip is down"
        fi
done

shell基础篇(3️⃣)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值