Linux-shell编程经验记录

1、接收用户输入

#读取用户输入并且将输入保存到input变量中
read -p "请输入:" input

#也可以先输出信息再进行读取,这里的-n是为了用户输入和提示在同一行,不会换行
echo -n "请输入:"
read input

2、echo打印有颜色的输出

   #黑色
  echo -e "\033[30m 要打印的内容或变量 \033[0m"
  #红色
  echo -e "\033[31m 要打印的内容或变量 \033[0m"
  #绿色
  echo -e "\033[32m 要打印的内容或变量 \033[0m"
  #黄色
  echo -e "\033[33m 要打印的内容或变量 \033[0m"
  #蓝色
  echo -e "\033[34m 要打印的内容或变量 \033[0m" 
  #紫色
  echo -e "\033[35m 要打印的内容或变量 \033[0m" 
  #天蓝
  echo -e "\033[36m 要打印的内容或变量 \033[0m" 
  #白色
  echo -e "\033[37m 要打印的内容或变量 \033[0m" 

3、echo参数及打印格式

#开启对输出字符串中的转义字符\,比如输出带换行 \n、tab \t,不加参数打印纯字符串
echo -e "\t打印的内容\n"

#打印的末尾不换行
echo -n "打印的内容"

#例如:下面代码输出的是  我是Leil
echo -n "我是"
echo "Leil"

#-e -n 可以组合使用
echo -en "\t我是Leil"

4、[ ] 和 [[]] 的区别

#[ ] 实际上是bash 中 test 命令的简写
if [ $input -eq 0 ]; then
	echo "输入为0"
fi

#[[ ]]是对[ ]的一种增强,其中可以做更复杂的操作,比如&&、||,还有 =~,以及运算操作
#判断用户输入的数加上1,是否大于0小于10
if [[ $input+1 -gt 0 && $input+1 -lt 10 ]]
	echo "是"
else
	echo "不是"
fi

#  =~:正则匹配,用来判断其左侧的参数是否符合右边的正则的要求,如果匹配就输出1,不匹配就输出0

5、函数返回值

#函数返回值只能为介于 0~255 之间的整数,不可以是字符串或者布尔值
#在一个函数中调用另一个函数的返回的布尔值(0为真,1为假),如下例所示:

#判断数字是否为整数的函数
function is_int(){
	#如果参数为空返回1
	if [ $# -lt 1 ]; then
		return 1
	fi
	#如果参数为整数返回0
	if [[ $1 =~ ^-?[1-9][0-9]*$ ]]; then
		return 0
	fi
	if[[ $1 =~ ^0$ ]]; then
		return 0
	fi
	#如果参数为其它字符返回1
	return 1
}

#接收用户输入
read -p "请输入:" input

#判断用户输入是否为整数
if is_int $input; then
	echo "输入是整数!"
else
	echo "输入不是整数!"
fi

6、case模式

read -p "请输入:" input

case $input in 
 模式1)
 	命令1
 	;;
 模式2)
 	命令2
 	;;
 *)
 	命令3
esac

#注:模式可以匹配单个字符和多个字符,比如匹配两位数就可以写成 [0-9][0-9]) 但是必须输入的是两位。[]的数如果是范围最大是9,如果写[0-10]则不会匹配到这个模式。
posted @ 2021-03-19 17:43  Leil_blogs  阅读(46)  评论(0编辑  收藏  举报