Shell编程
注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hbase Hive Flume等等~写的都是纯干货,各种顶会的论文解读,一起进步。
今天继续和大家分享一下Shell编程
#博学谷IT学习技术支持
前言
今天继续和大家分享Shell编程基础常用代码2,函数,数组,select语句和几个综合案例
一、Shell的函数
#----定义1:没有参数,没有返回值-----------
function func1(){
echo "Hello World"
}
调用函数:
func1
#----定义2:有参数,没有返回值-----------
function func2(){
echo "Hello World--$1--$2" #这里的$1和$2是向函数传入的参数
return 88
}
调用函数:
func2 aaa bbb
#----定义3:有参数,有返回值-----------
func3(){
sum=$[$1+$2]
echo $sum #shell的函数的返回值必须通过echo返回
}
调用函数:
result=$(func3 10 20)
echo "result=$result"
总结:
1、如果单独调用函数,则函数内部的echo会直接输出到控制台
func3
2、如果想要有返回值,则函数内部一般只写一个echo
result = $(func3 10 20)
二、Shell的数组
#!/bin/bash
#1-数据的定义
array=("hello" "java" "mysql" "shell" "linux")
#2-访问数据元素
echo ${array[3]} #shell
#3-将数组所有元素转为字符串输出
echo ${array[*]}
#4-获取数组的长度
echo ${#array[*]}
#5-遍历数组-方式1
echo "----------方式1-------------"
for str in ${array[*]}
do
echo $str
done
echo "----------方式2-------------"
len=${#array[*]}
for((i=0;i<len;i++))
do
echo ${array[$i]}
done
三、Shell的select语句
#----案例1-----------
echo "你要进行什么操作"
PS3="请输入你选择:"
select var in "启动" "停止" "重启"
do
case $var in
"启动")
echo "启动"
;;
"停止")
echo "停止"
;;
"重启")
echo "重启"
esac
break
done
echo "$var 操作"
#----案例2-----------
#!/bin/bash
echo "你想学习什么语言?"
PS3="请输入你的选择:" # 设置提示字符串
select var in java c++ shell python
do
case $var in
"java")
echo "恭喜你选择成功.java最牛"
;;
"c++")
echo "驱动开发 网络优化 go 语言"
;;
"shell")
echo "运维必会"
;;
"python")
echo "人工智能"
esac
break # 如果这里没有break 将会进行无限循环
done
echo "你选择的是:$var"
四、Shell的脚本调入
1、编写func1.sh
#!/bin/bash
MAX_VALUE=2147483648
R="Asia/beijing"
func1(){
echo "我是func2.sh中的func1函数!"
}
2、编写func2.sh
#!/bin/bash
MAX_VALUE=2147483648
STR="Asia/beijing"
func1(){
echo "我是func2.sh中的func1函数!"
}
3、编写a.sh,导入func1.sh和func2.sh
#!/bin/bash
#1-导入shell脚本
#方式1
. /export/shell/test/func1.sh
. /export/shell/test/func2.sh
#方式2
#source /export/shell/test/func.sh
#2-使用脚本中内容
echo $MAX_VALUE
echo $STR
func1
五、Shell的综合案例
案例1-猜字游戏
#!/bin/bash
#生成100以内的随机数 提示用户猜测 猜对为止
#random 系统自带,值为0-32767任意数
#随机数1-100
num=$[RANDOM%100+1]
#read 提示用户猜数字
#if判断
#!/bin/bash
num=$[RANDOM%100+1]
while true
do
read -p "计算机生成了一个 1‐100 的随机数,你猜:" cai
if [ $num -gt $cai ];then
echo "猜小了"
elif [ $num -lt $cai ];then
echo "猜大了"
else
echo "猜对了"
break
fi
done
案例2-一键安装jdk
#!/bin/bash
# 1.提示安装jdk
echo "现在开始安装jdk"
sleep 1 # 休眠1秒钟
# 2.删除centos自带的jdk
oldjava=$(rpm -qa | grep java )
for old in ${oldjava}
do
# echo $old
rpm -e --nodeps $old
done
# 3.创建安装目录/export/server, 进入安装目录
java_path="/export/server"
if [ ! -d $java_path ]
then
mkdir -p $java_path
fi
#4:解压jdk安装包
tar -xvf /export/software/jdk-8u241-linux-x64.tar.gz -C $java_path
# 6.设置环境变量
JAVA_HOME="/export/server/jdk1.8.0_241"
grep "JAVA_HOME" /etc/profile
if [ $? -ne 0 ]
then
# JAVA_HOME
echo "--------------JAVA_HOME------------------"
echo 'export JAVA_HOME=/export/server/jdk1.8.0_241' >> /etc/profile
# PATH
echo "--------------PATH------------------------"
echo 'export PATH=:$JAVA_HOME/bin:$PATH' >> /etc/profile
fi
# 7.加载环境变量
source /etc/profile
# 8.提示用户安装成功,查看jdk安装版本
echo "恭喜您,jdk安装成功!"
java -version
总结
今天和大家分享了Shell编程基础常用代码2,函数,数组,select等语法。有时间复习一下。