变量

变量的三大组成部分

1.变量名:用来访问到变量值
2.赋值符号:将变量值的内存地址绑定给变量名
3.变量值:即我们存的数据

命名规范

命名风格

先定义,后使用

语法:变量名=值
注意:等号左右不能有空格

变量值的来源

直接赋值

1. 显式赋值:变量名=变量值

示例:

ip1=192.168.11.200
school="Shanghai oldboy"
today1=`date +%F`
today2=$(date +%F)
 
# 2、应用示例
[root@localhost ~]# url="www.baidu.com"
[root@localhost ~]# echo $url
www.baidu.com
[root@localhost ~]# url="www.sina.com.cn"
[root@localhost ~]# echo $url
www.sina.com.cn

从位置参数获取变量值

从调用脚本时传入的位置参数获取变量值:./b.sh a1 a2 a3
需要用到$n获取第n个位置参数值,超过10需要用${n},如下
$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}
 
# 示例
[root@egon ~]# cat b.sh 
#!/usr/bin/env bash
echo ${0}
echo $1
echo $2
echo $3
echo $4
echo $5
echo $6
echo $7
echo $8
echo $9
echo ${10}
echo ${11}
echo ${12}
 
# 运行
[root@egon ~]# chmod +x b.sh 
[root@egon ~]# ./b.sh a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15
./b.sh
a1
a2
a3
a4
a5
a6
a7
a8
a9
a10
a11
a12
 
# 企业使用:可以实现脚本的不同功能(服务程序管理脚本-启动功能 关闭功能 重启功能)
server.sh  start|stop|restart

与用户交互获取值

何为交互,即输入、输出
 
# 一:read接收用户的输入,即从键盘读入变量值
read 变量名
read -p "提示信息: "  变量名
read -t 5 -p "提示信息: "  变量名  # -t指定秒数
read -n 2 变量名  # -n读取的字符个数
 
=======》应用示例:vim first.sh
back_dir1=/var/backup
read -p "请输入你的备份目录: " back_dir2
echo $back_dir1
echo $back_dir2
 
企业使用:可以根据需求调整变量值,可以便于新员工快速掌握企业脚本使用
 
# 二:输出
# 2.1 echo命令,详解情况:https://www.cnblogs.com/linhaifeng/articles/13976349.html
 
[root@egon ~~]# name="egon"
[root@egon ~~]# age=18
[root@egon ~~]# echo -e "my name is\t$name\nmy age is\t$age"
my name is  egon
my age is   19
 
还可以输出带颜色(了解即可)
# echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"
# 例如
# echo -e "\033[47;30m I love Egon! \033[0m",其中47的位置代表背景色, 30的位置是代表字体颜色
echo -e "\033[31m 红色字 \033[0m"
echo -e "\033[34m 黄色字 \033[0m"
echo -e "\033[41;33m 红底黄字 \033[0m"
echo -e "\033[41;37m 红底白字 \033[0m"
# 需要使用参数-e,man  echo 可以知道-e:enable interpretation of backslash escapes。 
 
# 2.2 prinf命令(C语言风格)
%s
%d
%7.3f  打印浮点数,总宽度为7,小数位保留3位,并且四舍五入
[root@egon ~~]# name="egon"
[root@egon ~~]# age=18
[root@egon ~~]# printf "my name is %s my age is %s\n" $name $age
my name is egon my age is 18        
 
[root@egon ~]# salary=3.3339
[root@egon ~]# printf "my name is %s my age is %7.3f\n" $name $salary
my name is egon my age is   3.334

删除变量

unset 变量名

预定变量

$*  所有的参数
$@  所有的参数
$#  参数的个数
$$  当前进程的PID  # 此外,可以使用只读变量来获取父进程的PID:$PPID、获取执行脚本的用户ID:$UID
$?  上一个命令的返回值 0表示成功 
 
示例1:
[root@egon ~]# chmod +x b.sh 
[root@egon ~]# ./b.sh a1 a2 a3 a4 a5
a1 a2 a3 a4 a5
a1 a2 a3 a4 a5
5
18988
1
[root@egon ~]# cat b.sh 
#!/usr/bin/env bash
echo $*
echo $@
echo $#
echo $$
 
ping -c1 192.168.11.10 &>/dev/null
echo $?
 
示例2:
[root@egon ~]# vim ping.sh
#!/bin/bash                         
ping -c2 $1 &>/dev/null      
if [ $? = 0 ];then                  
    echo "host $1 is ok"      
else                                            
    echo "host $1 is fail"    
fi
 
[root@egon ~]# chmod +x ping.sh
[root@egon ~]# ./ping.sh 192.168.11.10
posted on 2022-08-23 18:58  sprr  阅读(142)  评论(0编辑  收藏  举报