一、参数替换
两种方式
//当参数未被声明的时候,取-号后面的参数
unset username
username=${
   username -"zhansan"}
echo $username
  //当变量已经被声明但是被声明为null的时候取:-后面的参数
username=
username=${
   username:-"zhansan"}
echo $username
  当变量未被set的时候,设置=后面的参数为变量的值
unset usename 
echo ${
   username='lisi'}
  当变量被set为空(null)的时候,设置:=后面的参数为变量的值
username=
echo ${
   username:='lisi'}
  当变量被set的时候,设置+后面的参数为变量的值,否则设置为null
unset usename 
echo ${
   username+'lisi'}
  当变量被set为空(null)的时候,设置:+后面的参数为变量的值
username=
echo ${
   username:+'lisi'}
  测试参数是否被set 如果没有 打印errormsg
unset username
echo ${
   username?'error:unset varaible username'}
  当参数被set为null的时候 ,打印errormsg
username=
echo ${
   username:?'error:set varaible username to null'}
  测试变量是否被set
: ${username?} # :后面需要加空格,该命令不会被输出,除非变量没有被设置
  根据变量查看被声明的变量
echo ${!varprefix*}
  二、随机数
#$RANDOM
RANGE=20
#范围随机数
let "number=$RANDOM % $RANGE"
echo $number
  三、输出数组长度
array=(1,2,3)
echo ${#array[*]) echo ${#array[@]}
  四、for循环
list="file1.txt file2.txt file3.txt"
for file in $list
do
	echo $file
done
  没有参数的for循环会自动使用位置参数
for i
do
	echo $i # $1 $2........
done
  for 循环在二进制文件中查找字符串
for word in $( strings "$2" | grep "$1" )
do 
echo $word
done
  c语言风格的for 循环
for ((i=0;i<10;i++) 没有$符号
do
echo $i
done
for ((i=0,j=0;i<10;i++,j++) 没有$符号,同时对两个变量加一
do
echo $i
done
  while 的多条件循环,只有最后一个条件可以控制循环
while echo "previous-variable = $previous"
 echo
 previous=$var1
 [ "$var1" != end ] 
do 
	echo "while condition running"
done
  实例
a=1
b=3
while [ $a -lt 10 ]
	[ $b -lt 10 ]
	[ $a -lt $b ]
do
	let "a++"
	echo "running: \$a=$a ; \$b=$b"
done
  echo “--------------------”
五控制台输出不同颜色的字体
格式
 echo -e “\E[30;41]myourword” # -e 用于输出转义字符,这里的作用是输出颜色 ‘\E[’ 开始转义,’]m’ 转义结束 ,30为前景色黑色,41为背景色红色,两者的先后书写顺序不会影响输出结果,因为前景色和背景色使用不同的编号来标识。
 
#!/bin/bash
#测试脚本 cecho.sh
black='\E[30;47m'
red='\E[31;47m'
green='\E[32;47m'
yello='\E[33;47m'
blue='\E[34;47m'
magenta='\E[35;47m'
cyan='\E[36;47m'
white='\E[37;47m'
alias Reset="tput sgr0"
cecho(){
   
	local default_msg="no message"
	message=${1:-$default_msg}
	color=${2:-$black}
	echo -e "$color"
	echo "$message"
	Reset
	return
}
cecho "feeling blue" $blue
cecho "feeling yellow" $yellow
cecho "feeling cyan" $cyan
cecho "feeling red" $red
cecho "feeling black" $black
cecho "feeling green" $green

京公网安备 11010502036488号