Cat-God-007

导航

Shell脚本编程学习笔记(二)---- 变量

本文已参与[新人创作礼]活动,一起开启掘金创作之路。

一.变量

变量是编程语言中最基础的组成成分,shell的变量有以下这几种:

1.自定义变量

用固定的字符串去表示不固定的内容

例如

a=1
echo $a
unset $a
echo ${a}

2.系统环境变量

作用于当前shell及子shell,需要永久写入的话,就需要修改环境变量的配置文件。

例如

export IP=192.168.100.10
echo $IP
unset IP

3.预先定义变量

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

例如

vi test.sh
#!/usr/bin/bash    
echo "脚本文件名:$0"
echo "脚本名:$(basename$0)"
echo "所有的参数:$@"
echo "参数的个数:$#"
echo "当前进程的PID:$$"
echo "上一个命令的返回值(状态码):$?"
echo "Hello world"
 sh test.sh 1 2 3 4 5 6

4.位置参数变量

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

这里的位置参数是你在运行脚本时,在后面添加的参数所对应的变量

例如

vi test.sh
#!/usr/bin/bash    
echo $1
echo $2
echo $3
echo $4
echo "Hello world"
sh test.sh a b c d
sh test.sh a b c d e

5.内置变量

continue 忽略本次循环剩余的代码,直接进行下一步循环
break 结束当前循环,或跳出本层循环
exit 退出整个程序

二.变量赋值的方式

1. 显示赋值(变量名=变量值)

例如

ip=192.168.200.10
echo ${ip}

2. read从键盘读入变量值

read  变量名
read  -p  "提示信息:"   变量名
read  -t  5  -p  "提示信息:"  变量名   等待5s退出
read -n 2  变量名                 同时读取2个变量值
read -n 1 -p "Enter a char > " char

例如

vi first.sh
#!/usr/bin/bash    
read -p "请输入你要去的目录: " go
read -n 10 -p "请输入10个字符  " go1 
echo "----------------"
read  -t  5  -p "干嘛呢!跑那么远! " go3
echo $go
echo $go1
echo $go3
sh first.sh

三.其他用法

强引用 ' ' 弱引用 " "

例如

school = Iphone
echo "${school} is good"
echo '${school} is good'

替换等价$( )

例如

touch `date +%F`_file1.txt
touch $(date +%F)_file2.txt

四.变量数值运算

整数运算
1.expr + - *  /  %

例如

a=2
b=4
expr $a + $b
expr $a * $b
2.$( ( ) )   + - *  /  %

例如

a=2
b=4
echo $(($a + $b))
echo $(($a * $b))
3.$[ ]  + - *  /  %

例如

a=2
b=4
echo $[$a + $b]
echo $[$a * $b]
4.let   + - *  /  %

例如

let sum=2+3
echo $sum
小数运算

需要提前装软件bc

yum install bc

例如

echo "2^4" |bc
echo "2*4" |bc
echo "scale=2;6/4" |bc
取消变量

unset 变量名

例如

url=www.baidu.com
echo ${url}
unset url
echo ${url} 
变量替代

${变量名-新的变量值}

变量没有被赋值;会使用"新的变量值"替代

变量有被赋值(包括空值);则不会使用"新的变量值"替代

例如

url=www.baidu.com
echo ${url-www.baidu.com}
unset url
echo ${url-www.baidu.com}  //默认值

${变量名:-新的变量值}

变量没有被赋值(包括空值);会使用"新的变量值"替代

变量有被赋值;则不会使用"新的变量值"替代

例如

url=
echo ${url-www.baidu.com}
echo ${url:-www.baidu.com} 
变量自增

变量++

例如

vi i.sh
#!/usr/bin/bash
ip=192.168.56.11
i=1
while [$i -le 5 ];do          #-le  小于
         ping -c1 $ip &>/dev/null
         if [ $? -eq 0 ];then
                 echo "$ip is up...."
         fi
         let i++
done
sh -x i.sh    #启动调试模式运行脚本

36.jpg 感谢大家,点赞,收藏,关注,评论!

posted on 2022-05-30 08:53  CatGod007  阅读(0)  评论(0)    收藏  举报  来源