文章目录

  • 一、变量
  • 二、菜单
  • 三、算数运算
    • 3.1 while加法
    • 3.2 for加法
    • 3.3 整数加减乘除
    • 3.3 浮点数加减乘除
  • 排序
  • 四、循环

一、变量

调试下列 shell 程序,写出变量$#,$0,$1,$2,$3, $@的含义。

echo “所有参数: $@”
echo “前三个参数:$1 $2 $3”
shift
echo “程序名:$0”
echo “所有参数: $@”
echo “前三个参数:$1 $2 $3”
shift 3
echo “程序名:$0”
echo “所有参数: $@”
echo “前三个参数:$1 $2 $3”
exit 0

$#:传给脚本的参数个数
$0:脚本名称
$1:传给脚本的第1个参数
$2: 传给脚本的第2个参数.
$3: 传给脚本的第3个参数
$@:参数列表

修改程序,程序运行时从键盘输入文件名,判断文件是否存在,如果存在,显示文件 内容

echo "input:"
read DORF
if [ -d $DORF ]
then
ls $DORF
elif [ -f $DORF ]
then
cat $DORF
else
echo "input error"
fi

二、菜单

调度下列程序,使用 shell 编写一个菜单,分别实现列出以下内容:(1)目录内容、(2)切换目录、(3)创建文件、(4)编辑文件、(5)删除文件的功能。在此例 中将用到循环语句 until、分支语句 case、输入输出语句 read 和 echo。

while true
doecho "(1)List you selected directory"echo "(2)Change to you selected directory" echo "(3)Creat a new file"echo "(4)Edit you selected file"echo "(5)Remove you selected file" echo "(6)Exit Menu"read inputif test $input = 6; then
exit 0ficase $input in1) ls;;2) echo -n "Enter target directory:" read dircd $dir;;3) echo -n "Enter a file name:" read filetouch $file;;4) echo -n "Enter a file name:" read filevi $file;; 5) echo -n "Enter a file name:"read filerm $file;;*) echo "Please selected 1\2\3\4\5\6 " ;; esac
done

修改以上程序,用菜单形式完成算术四则混合运算。

while true
doecho "(1)+"echo "(2)-" echo "(3)*"echo "(4)/"echo "(5)Exit Menu"read inputif test $input = 5; then
exit 0ficase $input in1) total=0read aread blet total=`expr $a+$b` echo "a+b=$total";;2) total=0read aread b let total=`expr $a-$b`echo "a-b=$total";;3) total=0read aread blet total=`expr $a*$b`echo "a*b=$total";;4) total=0read aread blet total=`expr $a/$b`echo "a/b=$total";; *) echo "Please selected 1\2\3\4\5\6 " ;; esac
done

三、算数运算

3.1 while加法

(1) 用 while 循环求 1 到 100 的和。

total=0
num=0
while((num<=100));
dototal=`expr $total + $num` ((num+=1))
done
echo "The result is $total"

3.2 for加法

1.用 for 语句完成 1+1/2+1/3+1/4+….+1/n。

read n
temp=0.000
sum=0.000
for((i=1; i<=$n; i++));doj=$iif [ $j != 0 ]thentemp=`echo "scale=3;1.000/$j" | bc`sum=`echo "scale=3;$sum+$temp" | bc`fi
done
echo "sum=$sum"

2.编写一个shell脚本,包含两个数组array1和array2,分别初始化为{1,2,3,4,5}和{1,4,9,16,25}。脚本生成并显示一个数组,其中的元素是这两个数组中对应元素的和,数组中第一个元素是1+1=2,第二个元素2+4=6,依此类推。

declare -a array3=()
declare -a array1=(1 2 3 4 5)
declare -a array2=(1 4 9 16 25)
for((i=0;i<=4;i++));
do
array3[i]=$((${array1[i]}+${array2[i]}))
done
echo ${array3[*]}

3.3 整数加减乘除

用菜单形式完成算术四则混合运算。

read a
read b
let t=`expr $a+$b`
let t2=`expr $a-$b`
let t3=`expr $a*$b`
let t4=`expr $a/$b`
echo $t $t2 $t3 $t4

注意:字符串拼接or算术运算 let

3.3 浮点数加减乘除

read a
read b
total=$(printf "%0.2f" `echo "scale=2; $a+$b"|bc`)
total2=$(printf "%0.2f" `echo "scale=2; $a-$b"|bc`)
total3=$(printf "%0.2f" `echo "scale=2; $a*$b"|bc`)
total4=$(printf "%0.2f" `echo "scale=2; $a/$b"|bc`)
echo $total $total2 $total3 $total4

排序

编写shell脚本,完成从键盘输入三个数,脚本对这三个数进行升序排序,并打印输出。

read -ep "input:" num1
read -ep "input:" num2
read -ep "input:" num3
echo -e "$num1\n$num2\n$num3"|sort -nr

四、循环

编写一个bash脚本程序,用for循环实现将当前目录下的所有.c文件移到指定的目录下,最后在显示器上显示指定目录下的文件和目录。

echo -n "input:"
read dir
for i in `ls | grep -E "*\.c"`
do
mv $i $dir
done
ls -IS $dir

编写shell脚本,通过循环的形式在终端上打印出等腰三角形。

for ((i = 1; i < 10; i++))
dofor ((j = 10; j > i; j--))do  echo -n " ";donefor ((m = 1; m <= i; m++))do  echo -n "* "doneecho ""
done

编写shell脚本,通过循环的形式在终端上打印出等腰梯形。

for ((a=1;a<=9;a++))
do for ((b=9;b>=$a;b--))doecho -n " "donefor ((c=1;c<=$a;c++))doecho -n "*"donefor ((d=2;d<=$a;d++))doecho -n "*"donefor ((e=1;e<=9;e++))doecho -n "*"done
echo ""
done

Linux-shell相关推荐

  1. linux shell $0怎么输出,linux shell中$0,$?,$!等的特殊用法

    一.Shell脚本中$0.$?.$!.$$.$*.$#.$@等的意义说明 (1)$$ Shell本身的PID(ProcessID,即脚本运行的当前进程ID号) (2)$! Shell最后运行的后台Pr ...

  2. linux shell for 循环变量,shell for循环总结

    1 shell for循环语法 for 变量 in 列表 do command1 command2 ... commandN done 1.1 读取列表中的值 #!/bin/bash for test ...

  3. 学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程

    Linux Shell脚本教程:30分钟玩转Shell脚本编程 http://c.biancheng.net/cpp/shell/ 转载于:https://www.cnblogs.com/pegasu ...

  4. 执行远程linux命令,linux shell 远程执行命令

    经常要部署多台服务器上面的应用,如果一个个机器的登录太麻烦. 所有就想到编写一个脚本来部署不同的服务器 前提条件: 配置ssh免登陆 如果不会的请参加我的另外一篇文章 http://blog.csdn ...

  5. Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  6. Linux Shell高级技巧(目录)

    为了方便我们每个人的学习,这里将给出Linux Shell高级技巧五篇系列博客的目录以供大家在需要时参阅和查找. Linux Shell高级技巧(一)  http://www.cnblogs.com/ ...

  7. Linux shell命令总结

    01 前言 Linux shell命令应该算是非常入门的东西,但是实际上在使用的时候,会遇到各种各样的问题,前几天我在我们的项目上需要做一个功能,根据进程名字杀死这个进程,下面是过程 1.我们正常需要 ...

  8. linux中的shell有printf吗,Linux Shell系列教程之(八)Shell printf命令详解

    在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell printf命令有了一个简略的介绍,本篇给大家详细介绍下Shell中的printf命令. 一.Shell p ...

  9. linux的shell的功能,linux shell中${ }的一些特异功能

    linux shell中${ }的一些特异功能,这部分内容是shell中的比较经典的部分之一,建议认真学习,深刻体会. 假设我们定义一个变量为: file=/dir1/dir2/dir3/my.fil ...

  10. Linux shell 中的数组和关联数组

    写在前面的话 我用开始废柴了,这个又是写给我自己看的了. 普通数组 1.数组的定义 在Linux shell中定义一个普通的数组很简单,首先我们先给数组命名(当然要符合所有的命名规则咯).定义数组的一 ...

最新文章

  1. Springboot swagger2教程
  2. 【Python数据挖掘课程】七.PCA降维操作及subplot子图绘制
  3. fpga在线升级 linux_仅5000行Verilog代码、可在FPGA上跑轻量级Linux系统的RISC-V内核
  4. ::after和::before
  5. c语言file_C语言程序的编译和调试
  6. 装微软原版win10系统
  7. 为Ubuntu安装中文语言包
  8. 速卖通奇门+聚石塔流程
  9. 基于小梅哥AC620开发板的NIOS II LWIP百兆以太网例程
  10. 二进制炸弹--拆弹实验
  11. RFC868--时间协议客户机与服务器的实现
  12. Sedona NetFusion 在OIF/ONF T-API 互通测试中扮演关键角色
  13. 知己知彼,一起来了解中国在线音频市场现状!
  14. Elasticsearch教程 | 第三篇:审计设置
  15. [UOJ198][CTSC2016]时空旅行
  16. 使用Ajax传用户信息数据到后端
  17. 【JAVA学习】java中怎么遍历HashMap(Iterator迭代器遍历)
  18. 解释一下什么叫:同一个java文件只能有一个public类
  19. Visual Studio 2022 v17.5 正式发布
  20. 深圳大学计算机学硕毕业条件,深圳大学硕士研究生奖助体系(2020级)

热门文章

  1. Android开发(七)——判断网络状态
  2. CSS3学习笔记--transform中的Matrix(矩阵)
  3. 粒子滤波实现物体跟踪
  4. 人工智能技术的新突破:MIT科学家发明Church AI语言
  5. [转]JS中判断鼠标按键判断
  6. android sharesdk分享功能,Android ShareSDK快速实现分享功能
  7. java创建日程到期提醒_Mac用户必备日程时间管理器,有计划有效率的人生才算完美!...
  8. 中药免疫肿瘤学数据库,TCMIO使用指南
  9. python文件数据总和计算_python 计算文件夹里所有内容的大小总和
  10. STL之Map和MFC之CMap比较学习