版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
大数据系列文章目录
定义变量,输出变量
#!/bin/bash
string='I am shell'
num=5
echo "a=${num},string=${string}"
输盘输入,执行Lunix命令
#!/bin/bash
echo 'who are you?'
read name #从键盘获取变量的值
pwd_string=$(pwd) #将当前绝对路径赋值给pwd_string变量
date_string=`date` #将当前时间赋值给date_string变量注意这里使用的是反引号
echo "hello,${name}"
echo $pwd_string
echo $date_string
变量禁止修改
#!/bin/bash
myUrl='http://www.google.com'
readonly myUrl
myUrl='http://www.google.com'
变量删除
#!/bin/bash
myUrl='http://www.google.com'
unset myUrl
echo "${myUrl}"
获取传递的变量
#!/bin/bash
echo "Shell 传递参数实例!";
echo "当前文件的名称:$0";
echo "第一个参数:$1";
echo "第二个参数:$2";
echo "第三个参数:$3";
echo "参数的个数:$#";
echo "传递的参数作为一个字符串显示*:$*";
字符串拼接,转义
#!/bin/bash
yourname="吴恩达"
wenhou_1="你好,$yourname."
wenhou_2="你好,"$yourname"."
wenhou_3="你好,\"$yourname\"."
echo $wenhou_1 $wenhou_2 $wenhou_3
获取字符串长度
#!/bin/bash
str="jobs"
echo "${str}"
echo "${#str}"
~
截取字符串
#!/bin/bash
str="敢于亮剑绝不后退"
echo "${str:0:2}" #第一位数字是从几位开始,第二位数字是截取几位
查询字符串
#!/bin/bash
str="i am a boy"
echo `expr index "$str" io`
算术运算
#!/bin/bash
a=4
b=20
#加法运算
echo `expr $a + $b`
#减法运算
echo `expr $a - $b`
#乘法运算,注意*号前面需要反斜杠
echo `expr $a \* $b`
#除法运算
echo `expr $a / $b`
#此外,还可以通过$(())、$[]进行算术运算
echo "a = $a"
c=$((a+b))
d=$[a+b]
echo "c = $c"
echo "d = $d"
流程控制if
#!/bin/bash
if [ $(ps -ef | grep -c "ssh") -gt 1 ] #grep -c 用于统计字符串出现的次数
then
echo "true"
fi
#!/bin/bash
DIR="/media/cdrom"
if [ ! -e $DIR ]
then
echo "不存在${DIR}这个文件"
mkdir -p $DIR
fi
流程控制if-else
#!/bin/bash
read -p "Enter you age(1-100) : " age
if [ $age -ge 18 ]
then
echo '已经成年!'
else
echo '未成年!'
fi
流程控制if-test
#!/bin/bash
echo "计算2个数是否相等!"
read -p '请输入第一个数:' num1
read -p '请输入第二个数:' num2
if [[ ! "$num1" =~ ^[0-9]+$ ]] || [[ ! "$num2" =~ ^[0-9]+$ ]]
then
echo '请输入数字!!'
exit
fi
if test $num1 -eq $num2
then
echo '2个数相等'
else
echo '2个数不相等'
fi
流程控制if-elif-else
#!/bin/bash
echo '请输入a的值'
read a
echo '请输入b的值'
read b
if [ $a == $b ]
then
echo '2个数相等'
elif [ $a -gt $b ]
then
echo 'a大于b'
elif [ $a -lt $b ]
then
echo 'b大于a'
else
echo '没有符合的条件'
fi
#!/bin/bash
echo '判断成绩优、良、中、差'
read -p 'Enter you score(0-100):' n #-p表示给出提示信息
if [ $n -ge 85 ] && [ $n -le 100 ];then
echo '优'
elif [ $n -ge 70 ] && [ $n -le 84 ];then
echo '良'
elif [ $n -ge 60 ] && [ $n -le 83 ];then
echo '中'
else
echo '差'
fi
for循环
#!/bin/bash
echo '--------------------------------第一个for循环-------------------------------'
for loop in 1 2 3 4 5
do
echo "$loop"
done
echo '--------------------------------第二个for循环--------------------------------'
for str in 'This is a string'
do
echo "$str"
done
echo '--------------------------------第三个for循环--------------------------------'
for file in $(ls /root)
do
echo $file
done
echo '--------------------------------第四个for循环--------------------------------'
for(( i = 1; i <=10; i++ ))
do
echo $i
done
echo '--------------------------------第五个for循环--------------------------------'
echo '计算从1加到100的累加值'
s=0
for((i = 1; i<=100; i++))
do
s=$(($s + $i))
done
echo "从1加到100的和为:$s"
while循环
#!/bin/bash
echo '---------------------------------------第一个while循环----------------------------------'
num=1
while (( $num <= 5 ))
do
echo $num
let num++
done
echo '--------------------------------------第二个while循环----------------------------------'
sum=0
i=1
while [ $i -le 100 ]
do
let sum=sum+$i
let i++
done
echo "从1加到100之后的值为:$sum"
echo '--------------------------------------第三个while循环----------------------------------'
#while :
#do
#echo '我是无限循环'
#done
#while true
#do
#echo '我是无限循环'
#done
for((;;))
do
echo '我是无限循环'
done
case
#!/bin/bash
echo '请输入 1 到 4 之前的数字'
read num
case $num in
1) echo '你选择了1'
;;
2) echo '你选择了2'
;;
3) echo '你选择了3'
;;
4) echo '你选择了4'
;;
*) echo '你没有输入1到4之间的数字'
;;
esac
break
#!/bin/bash
echo '输入1 到 5之间的数字,否则游戏结束'
while :
do
echo -n "请输入 1 到 5 之间的数字:"
read num
case $num in
1|2|3|4|5) echo "你输入的数字为:$num"
;;
*) echo '你输入的数字不是1到5之间的game over'
break
;;
esac
done
continue
#!/bin/bash
while :
do
echo -n '请输入1 到 5之间的数字:'
read num
case $num in
1|2|3|4|5) echo "你输入的数字为:$num"
;;
*) echo "你输入的数字不是1到5之间的GameOver"
continue
echo '游戏结束'
;;
esac
done
function
#!/bin/bash
echo '---------------------------------这是第一个函数---------------------------'
function demoFun(){
echo '这是一个函数'
}
echo '函数开始执行-------'
demoFun
echo '函数结束执行-------'
echo '--------------------------------这是第二个函数----------------------------'
function funWithReturn(){
echo '这里的函数会对2个数进行相加运算'
echo '输入第一个数字'
read num1
echo '输入第二个数字'
read num2
echo "两个数字分别为:$num1 和 $num2"
echo "两个数的和为:$((num1 + num2))"
return $(($num1 + $num2))
}
funWithReturn
echo "退出状态码:$?!"
echo '--------------------------------这是第三个函数-----------------------------'
funWithParam(){
echo "第一个参数为:$1 "
echo "第二个参数为:$2 "
echo "第十个参数为:$10 "
echo "第十个参数为:${10}"
echo "第十一个参数为:${11}"
echo "参数的总数为:$# 个"
echo "作为一个字符串输出所有的参数:$*"
}
funWithParam 1 2 3 4 5 99 78 989 132 123 12312
array
#!/bin/bash
my_array=("A" "B" "C" "D")
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
echo "my_array中第一个位置的值为:${my_array[0]}"
echo "array_name中第一个位置的值为:${array_name[0]}"
echo "my_array中的所有元素为:${my_array[*]}"
echo "array_name中所有元素为:${array_name[@]}"
echo "my_array数组的长度为:${#my_array[@]}"
echo "array_name数组的长度为:${#array_name[*]}"
echo "---------------遍历数组第一种方式------------------"
for var in ${my_array[*]}
do
echo "$var"
done
echo "---------------遍历数组第二种方式-----------------"
arrayNameLength=${#array_name[@]}
for (( i = 0; i < arrayNameLength; i++ ))
do
echo "${array_name[$i]}"
done
select
#!/bin/bash
echo "What is your facourite OS?"
PS3="Please enter your choice:"
select var in "Linux" "Gnu Hurd" "Free BSD" "Other"
do
break;
done
echo "You have selected $var"
select 和 case
#!/bin/bash
echo "select和case结合使用!"
echo "你想学习什么语言?"
PS3="请输入你的选择:"
select var in java c++ python go javaScript;
do
case $var in
"java")
echo "恭喜你选择成功.java最牛"
;;
"c++")
echo "驱动开发 网路优化 C++ "
;;
"python")
echo "人工智能 机器学习 python"
;;
"go")
echo "性能之王 超越各种语言 未来发展支柱 go"
;;
"javaScript")
echo "发展悠久 久盛不衰 javaScript"
;;
*)
echo "你不是守规矩的人!!"
;;
esac
break; # 如果这里没有break 将会无限循环
done
echo "你选择的是:$var"
引用其他.sh文件
#!/bin/bash
source ./test23_array.sh
echo "---------------------------------------------测试引用包含其他文件----------------------------------------"
for var in ${my_array[*]}
do
echo "测试引用包含其他文件:$var"
done
综合小案例
猜数字
游戏规则为:程序内置一个1到100 之间的数字作为猜测的结果,由用户猜测此数字。用户每猜测一次,由系统提示猜测结果:大了、小了或者猜对了;直到用户猜对结果,则提示游戏结束。
#!/bin/bash
randomNumber_array[0]=1
for(( i = 1; i<100; i++))
do
randomNumber_array[i]=$((i+1))
done
#echo "randomeNumber_array:${randomNumber_array[*]}"
number=${randomNumber_array[RANDOM%100+1]}
while :
do
read -p "计算机生成了一个 1‐100 的随机数,你猜: " readNum
if [ $readNum -eq $number ]
then
echo "猜对了"
break;
elif [ $readNum -gt $number ]
then
echo "大了"
else
echo "小了"
fi
done
创建文件,并且拷贝到指定位置
写一个脚本,在用户目录下创建四个文件m1.txt,m2.txt,m3.txt,m4.txt,用Shell编程,实现自动创建m1,m2,m3,m4四个目录,并将 m1.txt,m2.txt,m3.txt,m4.txt四个文件分别拷贝到各自相应的目录下。
#!/bin/bash
for var in m1 m2 m3 m4;
do
if [ -e "/home/$var" ]
then
echo "$var已存在,开始删除...."
$(rm -rf "/home/$var")
fi
echo "开始创建文件:$var.txt"
$(touch "/home/$var".txt)
echo "文件创建成功,等待5s后开始创建$var目录"
$(sleep 5s)
$(mkdir "/home/$var")
echo "$var目录创建成功,等待5s后开始将/home/$var.txt拷贝到/home/$var"
$(sleep 5s)
$(mv "/home/$var".txt /home/$var)
echo "拷贝成功!!"
done
统计/var/log中的文件个数,并打印文件名
写一个shell脚本,统计/var/log 有多少个文件,并显示这些文件名文章来源:https://www.toymoban.com/news/detail-461615.html
#!/bin/bash
sum=0
for var in $(ls /var/log)
do
#if [ -f $var ]
#then
sum=$((sum + 1))
echo "$var"
#fi
done
echo "---------------------------------------------------"
echo "/var/log中共有$sum个文件"
用户输入3个数,并按从小到大依次输出
写一个shell脚本,依次提示用户输入 3 个整数,脚本根据数字大小依次排序输出 3 个数字文章来源地址https://www.toymoban.com/news/detail-461615.html
#!/bin/bash
read -p "请输入第一个整数:" num_1
read -p "请输入第二个整数:" num_2
read -p "请输入第三个整数:" num_3
one=0
two=0
three=0
if [ $num_1 -ge $num_2 ]
then
if [ $num_1 -ge $num_3 ]
then
three=$num_1
if [ $num_2 -ge $num_3 ]
then
two=$num_2
one=$num_3
else
two=$num_3
one=$num_2
fi
else
three=$num_3
two=$num_1
one=$num_2
fi
else
if [ $num_2 -ge $num_3 ]
then
three=$num_2
if [ $num_1 -ge $num_3 ]
then
two=$num_1
one=$num_3
else
two=$num_3
one=$num_1
fi
else
three=$num_3
two=$num_2
one=$num_1
fi
fi
echo "-------------------------------------------------------------------"
echo "你输入的最大值为:$three"
echo "你输入的中间值为:$two"
echo "你输入的最小值为:$one"
到了这里,关于Shell脚本的基本例子的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!