: 作用域为整个bash进程;set 可以省略
local VARNAME=VALUE
:作用域为当前代码段;
#!bin/bash
ip=192.168.110.1
ping -c1 $ip &>/dev/null $$ echo "$ip is up" || echo "$ip is down"
方式一
#!bin/bash
ip=192.168.110.1
if ping -c1 $ip &>/dev/null; then
echo "$ip is up"
else
echo "$ip is down"
fi
方式二 //-eq(等于) $?(上一个命令的返回值)
#!bin/bash
ip=192.168.110.1
ping -c1 $ip &>/dev/null
if [ $? -eq 0 ]; then
echo "$ip is up"
else
echo "$ip is down"
fi
#!bin/bash
#read ip
#存在提示
read -p "Please input a ip: " ip
ping -c1 $ip &>/dev/null
if [ $? -eq 0 ]; then
echo "$ip is up"
else
echo "$ip is down"
fi
#!bin/bash
ping -c1 $1 &>/dev/null
if [ $? -eq 0 ]; then
echo "$1 is up"
else
echo "$1 is down"
fi
test命令
./ping 192.168.110.1
ip1=1.1.1.1
export ip2=2.2.2.2
或者
ip1=1.1.1.1
export ip1
unset 变量名
PATH =$PATH:/new/bin
export PATH
env echo 环境变量 或者env | grep 变量名
$变量名 或${变量名}
$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}
$0
脚本名 $*
所有的参数 $@
所有的参数 $#
参数的个数 $$
当前进程的PID $!
上一个后台进程的PID $?
上一个命令的返回值 0表示成功
撤消变量:unset VARNAME
查看当shell中变量:set:包括本地变量和环境变量
查看当前shell中的环境变量:01:printenv 02:env 03:export
#!bin/bash
#判断有没有参数
if [$# -eq 0];then
echo "usage:'basename $0' file"
exit
fi
#判断是不是文件
if [ ! -f $1 ];then
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
name="kaikai"
boy ="$name is good"
从键盘读入
read 变量名 可以同时多个值
read -p “提示”
read -t 5 等待五s
''
是弱引用,中间是没有变量的
""
是强应用,但是有特殊含义的符合需要进行转义
使用命令
book = `执行命令`
book = $(执行命令) #括号有时可省略
# expr
expr 1 + 2
expr $num1 + $num2
# $(())
echo $((1 + 2))
echo $((num1 + num2))
#$[]
echo $[1+2]
可以直接赋值 sum = $[1+2]
#let
let sum=1+2 echo =$let
例子:内存的使用
#!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"
#例子:多次ping
#!/bin/bash
ip= 192.168.110.1
i=1
while [ $i -le 5 ]
do
ping -c1 $ip $>/dev/null
if [ $? -eq 0 ];then
echo "$ip is up.."
fi
echo "$ip is down"
let i++
done
echo "a*4" |bc
echo "scale=2;6/4" |bc 小数后面保存两位
awk 'BEGIN{print 1/2}'
echo "print 5.0/2 " |python
url = www.kaikaiwang.com
echo ${#url} 获取变量的长度
echo ${url#www.} 在使用的时候删除www.
echo ${url#*.} 从前往后,最短匹配
echo ${url##*.} 从前往后,最长匹配,贪婪匹配
echo ${url%.*} 从后往前删除,最短匹配
echo ${url%%.*} 从后往前,最长匹配,贪婪匹配
url = www.kaikaiwang.com
echo ${url:0:5} www.k
echo ${url:5:5} aikai
echo ${url:5} aikaiwang.com
url = www.kaikaiwang.com
echo ${url/kaikaiwang/baidu} #www.baidu.com
echo ${url/a/A} #www.kAikaiwang.com
echo ${url//a/A} #www.kAikAiwAng.com
变量默认值
unset var1
echo ${var1}
echo ${var1-aaa}
aaa
var2=222
echo ${var2-aaa} #存在值的不能被替代
222
没有值或空值会被替换,有值不会被替代
var2=
echo ${var2:-aaa}
aaa
i++和++i什么区别
i=1
let x=i++ 先赋值,再运算
let y=++i 先运算,再赋值
#!/bin/bash
#判断用户输入的是否是数字
read -p "请输入一个整值:"num
if [[!"$num"=~^[0-9]+$]];then
echo"你输入的不是数字!"
exit
fi
echo "你使用的数字的:$num"
#!/bin/bash
read -p "请输入一个整值:"num
while true
do
if [["$num" =~ ^[0-9]+$]];then
break
else
echo "error number"
read -p "请重新输入一个整值:"num
fi
done