shell 脚本 -- 变量的类型,赋值

1. 自定义变量

定义变量: 变量名=变量值 变量名必须以字母或下划线开头,区分大小写
ip1=192.168.2.115
引用变量: $变量名 或 ${变量名}
查看变量: echo $变量名 set(所有变量:包括自定义变量和环境变量)
取消变量: unset 变量名
作用范围: 仅在当前 shell 中有效
 

#!/usr/bin/bash
ip=10.19.219.44

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

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

2. 环境变量


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

public.sh

#!/bin/bash
ip=1.1.1.1
dir_path=/etc/a.txt
export ip dir_path

1.sh

#!/bin/bash
echo $ip
echo $dir_path

在一个shell中运行public.sh

public.sh

#!/bin/bash
ip=1.1.1.1
dir_path=/etc/a.txt

1.sh

#!/bin/bash
chmod u+x ./public.sh
. public.sh
echo $ip
echo $dir_path


3. 位置变量

$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}

4. 预定义变量

$0 脚本名
$* 所有的参数
$@ 所有的参数
$# 参数的个数
$$ 当前进程的 PID
$! 上一个后台进程的 PID
$? 上一个命令的返回值 0 表示成功

示例 1:
# vim test.sh
echo "第 2 个位置参数是$2"
echo "第 1 个位置参数是$1"
echo "第 4 个位置参数是$4"
echo "所有参数是: $*"
echo "所有参数是: $@"
echo "参数的个数是: $#"
echo "当前进程的 PID 是: $$"
echo '$1='$1
echo '$2='$2
echo '$3='$3
echo '$*='$*
echo '$@='$@
echo '$#='$#
echo '$$='$$
#!/bin/bash
if [ $# -eq 0 ]; then
    echo "usage: `basename $0` file"    #basename 用来只显示文件名   dirname文件夹
fi

if [ ! -f $1 ];then   #-f 用来判断是不是个文件
    echo "error 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

变量的赋值方式:
1. 显式赋值
变量名=变量值
示例:
ip1=192.168.1.251
school="BeiJing 1000phone"
today1=`date +%F`
today2=$(date +%F)

2. read 从键盘读入变量值  -p  提示信息     -t  等待时间     -n  输入长度
read 变量名
read -p "提示信息: " 变量名
read -t 5 -p "提示信息: " 变量名
read -n 2 变量名

示例 3:
# vim first.sh
back_dir1=/var/backup
read -p "请输入你的备份目录: " back_dir2 echo $back_dir1
echo $back_dir2
# sh first.sh

示例 4:
# vim ping2.sh

#!/bin/bash

read -p "Input IP: " ip

ping -c2 $ip &>/dev/null

if [ $? = 0 ];then

echo "host $ip is ok"

else

echo "host $ip is fail"

fi

# chmod a+x ping2.sh # ./ping.sh



定义或引用变量时注意事项:
" " 弱引用
' ' 强引用
[root@tianyun ~]# school=1000phone
[root@tianyun ~]# echo "${school} is good"
1000phone is good
[root@tianyun ~]# echo '${school} is good'
${school} is good

 

` ` 命令替换 等价于 $() 反引号中的 shell 命令会被先执行
[root@tianyun ~]# touch `date +%F`_file1.txt                      # +%F 以yyyy-mm-dd 格式输出
[root@tianyun ~]# touch $(date +%F)_file2.txt
[root@tianyun ~]# disk_free3="df -Ph |grep '/$' |awk '{print $4}'" 错误
[root@tianyun ~]# disk_free4=$(df -Ph |grep '/$' |awk '{print $4}')
[root@tianyun ~]# disk_free5=`df -Ph |grep '/$' |awk '{print $4}'`
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡搜偶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值