用一个固定的字符串去表示不固定的内容
定义变量:变量名=变量值 变量名必须以字母或下划线开头,区分大小写 ip1=192.168.2.115 引用变量:{变量名} 查看变量:echo $变量名 set(所有变量:包括自定义变量和环境变量)取消变量:unset 变量名作用范围:仅在当前Shell中有效
示例:
#!/bin/bash xihongshi=7 mogu=6 huluobo=8 echo 今日菜价: echo echo 西红柿:${xihongshi}¥ 一斤 echo 蘑菇:${mogu}¥ 一斤 echo 胡萝卜:${huluobo}¥ 一斤 echo echo 欢迎买菜!!! 下次便宜点!!
定义环境变量:
方法一 export back_dir2=/home/backup
方法二 export back_dir1 将自定义变量转换成环境变量
引用环境变量:{变量名}
查看环境变量:echo $变量名 env 例如 env | grep back_dir2set
取消环境变量:unset 变量名 变量作用范围:在当前Shell和子Shell有效
主要是在脚本执行后加参数!!!
2 4 6 8 {10}
示例:
#!/bin/bash echo 我是谁:$0 echo 我的第一个位置是: $1 echo 我的第二个位置是: $2 echo 我的年龄是:$1 echo 我的名字是:$2 echo 我的学校是:$3 echo 位置变量我学会了!!
所有的参数 "1 n"的形式输出所有参数@" 会将各个参数分开,以"2" … "# 参数的个数$$当前进程的PID? 上一个命令的返回值 0表示成功
示例:
#!/bin/bash echo "我的脚本是存在的: $0" echo "我的所有参数为: $*" echo "我的所有参数为: $@" echo "我的参数个数为:$#" echo "我的系统当前pid为:$$" sleep 1000 & echo "我的系统上一个pid为:$!" echo pwd echo "我上一个命令: $?"
示例:
# vim test.shecho "第2个位置参数是$2"echo "第1个位置参数是$1"echo "第4个位置参数是$4"echo "所有参数是: $*"echo "所有参数是: $@"echo "参数的个数是: $#" echo "当前进程的PID是: $$" echo '$1='$1 echo '$2='$2 echo '$3='$3 echo '$*='$* echo '$@='$@ echo '$#='$# echo '$$='$$
变量名=变量值
示例:
ip1=192.168.1.251 school="BeiJing 1000phone" ' ' today1=`date +%F` 截取命令中本身含义 today2=$(date +%F) 截取命令中本身含义
示例:
#!/bin/bash read -p "请输入你的姓名:" nameread -p "请输入你的密码:" passecho echo 你的姓名是:$name echo 你的密码是: $pass #!/bin/bash read -p "请输入你的姓名:" name read -s -p "请输入你的密码:" passecho echo 你的姓名是:$name echo 你的密码是: $pass [root@qfdeu ~]# vim first.sh back_dir1=/var/backup read -p "请输入你的备份目录: " back_dir2 echo $back_dir1 echo $back_dir2 [root@qfdeu ~]# sh first.sh
示例:
[root@qfdeu ~]# vim ping2.sh #!/bin/bash read -p "Input IP: " ip ping -c2 $ip &>/dev/null if [ $? = 0 ];then echo "host $ip is ok" else echo "host $ip is fail" fi [root@qfdeu ~]# chmod a+x ping2.sh [root@qfdeu ~]# ./ping.sh
" " 弱引用
' ' 强引用
[root@qfdeu ~]# school=1000phone [root@qfdeu ~]# echo "${school} is good" 1000phone is good [root@qfdeu ~]# echo '${school} is good' ${school} is good
(反引号)命令替换 等价于 $() 反引号中的Shell命令会被先执行
[root@qfdeu ~]# touch `date +%F`_file1.txt [root@qfdeu ~]# touch $(date +%F)_file2.txt [root@qfdeu ~]# disk_free3="df -Ph |grep '/$' |awk '{print $4}'" # 错误 [root@qfdeu ~]# disk_free4=$(df -Ph |grep '/$' |awk '{print $4}') [root@qfdeu ~]# disk_free5=`df -Ph |grep '/$' |awk '{print $4}'`
方法一:expr
[root@qfdeu ~]# expr 1 + 2 [root@qfdeu ~]# expr $num1 + $num2 + - \* / %
方法二:$(())
[root@qfdeu ~]# echo $(($num1+$num2)) + - * / % [root@qfdeu ~]# echo $((num1+num2)) [root@qfdeu ~]# echo $((5-3*2)) [root@qfdeu ~]# echo $(((5-3)*2)) [root@qfdeu ~]# echo $((2**3)) [root@qfdeu ~]# sum=$((1+2)); echo $sum
方法三:$[]
[root@qfdeu ~]# echo $[5+2] + - * / % [root@qfdeu ~]# echo $[5**2]
方法四:let
[root@qfdeu ~]# let sum=2+3; echo $sum [root@qfdeu ~]# let i++; echo $i let a+=2 //和a=a+2的效果一样 += 加等 *= 乘等 -= 减等 /= 除等 %= 模等
[root@qfdeu ~]# echo "2*4" |bc [root@qfdeu ~]# echo "2^4" |bc [root@qfdeu ~]# echo "scale=2;6/4" |bc [root@qfdeu ~]# awk 'BEGIN{print 1/2}' [root@qfdeu ~]# echo "print 5.0/2" |python
随机数:$RANDOM
[root@qfedu ~]# url=www.sina.com.cn [root@qfedu ~]# echo ${#url} # 获取变量值的长度15 [root@qfedu ~]# echo ${url} # 标准查看 www.sina.com.cn [root@qfedu ~]# echo ${url#*.} # 从前往后,最短匹配 sina.com.cn [root@qfedu ~]# echo ${url##*.} # 从前往后,最长匹配 贪婪匹配 cn [root@qfedu ~]# url=www.sina.com.cn [root@qfedu ~]# echo ${url} www.sina.com.cn [root@qfedu ~]# echo ${url%.*} # 从后往前,最短匹配 www.sina.com [root@qfedu ~]# echo ${url%%.*} # 从后往前,最长匹配 贪婪匹配 www [root@qfedu ~]# url=www.sina.com.cn [root@qfedu ~]# echo ${url#a.} www.sina.com.cn [root@qfedu ~]# echo ${url#*sina.} com.cn [root@qfedu ~]# echo $HOSTNAME qfedu.1000phone.com [root@qfedu ~]# echo ${HOSTNAME%%.*} qfedu
[root@qfedu ~]# echo ${url:0:5} [root@qfedu ~]# echo ${url:5:5} [root@qfedu ~]# echo ${url:5}
[root@qfedu ~]# url=www.sina.com.cn [root@qfedu ~]# echo ${url/sina/baidu} www.baidu.com.cn [root@qfedu ~]# url=www.sina.com.cn [root@qfedu ~]# echo ${url/n/N} www.siNa.com.cn [root@qfedu ~]# echo ${url//n/N} 贪婪匹配 www.siNa.com.cN
[root@qfedu ~]# unset var1 [root@qfedu ~]# [root@qfedu ~]# echo ${var1} [root@qfedu ~]# echo ${var1-aaaaa} aaaaa [root@qfedu ~]# var2=111 [root@qfedu ~]# echo ${var2-bbbbb} 111 [root@qfedu ~]# [root@qfedu ~]# var3= [root@qfedu ~]# echo ${var3-ccccc}
变量没有被赋值:会使用“新的变量值“ 替代
变量有被赋值(包括空值):不会被替代
[root@qfedu ~]# unset var1 [root@qfedu ~]# unset var2 [root@qfedu ~]# unset var3 [root@qfedu ~]# [root@qfedu ~]# var2= [root@qfedu ~]# var3=111 [root@qfedu ~]# echo ${var1:-aaaa} aaaa [root@qfedu ~]# echo ${var2:-aaaa} aaaa [root@qfedu ~]# echo ${var3:-aaaa} 111
变量没有被赋值(包括空值):都会使用“新的变量值“ 替代
变量有被赋值:不会被替代
[root@qfedu ~]# echo ${var3+aaaa} [root@qfedu ~]# echo ${var3:+aaaa} [root@qfedu ~]# echo ${var3=aaaa} [root@qfedu ~]# echo ${var3:=aaaa} [root@qfedu ~]# echo ${var3?aaaa} [root@qfedu ~]# echo ${var3:?aaaa}
本文作者:Gustav
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!