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 #启动调试模式运行脚本
感谢大家,点赞,收藏,关注,评论!
浙公网安备 33010602011771号