shell学习笔记-02-变量

1.ping test1
变量定义与使用

#!/usr/bin/bash
ip=10.18.42.1
if ping -c1 $ip &> /dev/null;then
echo "$ip is up."
else
echo "$ip is down."
fi

2.ping test2 使用上一个命令的返回值

$?上一个命令的返回值

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

3.ping test3 从键盘读入变量并赋值

$?上一个命令的返回值

#!/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

4.ping test4 命令行传入变量值

#$1代表第一个变量
#!/usr/bin/bash
ping -c1 $1 &> /dev/null
if [ $? -eq 0 ];then
echo "$1 is up."
else
echo "$1 is down."
fi
./pingtest4.sh 10.18.42.1 10.18.42.127
##会传入10.18.42.1第一个参数

5.自定义变量与环境变量

自定义变量影响范围仅在当前shell

环境变量会影响当前shell/子shell,关键字export

.表示在当前shell中执行,下图即可在不同shell中,拿到其他shell文件中的变量

6.位置变量+预定义变量

上图输出

7.$0的使用,输出脚本名

#!/usr/bin/bash
#如果用户没有输入参数,,要进行判断并提示
if [ $# -eq 0 ];then
echo "usage: $0 file"
exit
fi

#-f判断是不是一个文件,! -f 取反,不是一个文件
if [ ! -f $1 ];then
echo "error file!"
exit
fi

#读取文件,进行ping
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

8.变量的赋值

``
$()
#都表示将内部的命令先替换,再执行
`date +%F`
$(date +%F)

read 可以同时读取多个变量,使用空格分割

9.变量的运算

10.计算当前内存所占百分比

#! /usr/bin/bash
mem_used=`free -m |grep '^Mem:' |awk '{print $3}'`
mem_total=`free -m |grep '^Mem:' |awk '{print $2}'`
mem_percent=$((mem_used*100/mem_total))

echo "当前使用百分比: $mem_percent"

输出:
root@iZhp3j31ufmsnq0rht2ynkZ:~# bash men_use.sh
当前使用百分比: 2

11.变量的删除

12.各种特殊符号

() 子shell中执行
(()) 数值比较,类似C语言
$() 命令替换
$(()) 整数运算

{} 集合
${} 取变量值

[] 条件测试
[[]] 条件测试,支持正则=~
$[] 整数运算
Author: CinKate
Link: http://renxingkai.github.io/2022/02/09/shell-learn-02/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.