前言

如需使用本博文源码或者撰写文章,请注明博文来源:https://www.cnblogs.com/johnnyzen/p/10534386.html,劳动所得,侵权必究。

题目

設計一個shell腳本:判斷當前工作目錄下所有的文件類型,如果是目錄,顯示目錄名;如果是文件,查看文件內容;如果都不是,則顯示提示信息。

源码

#!/bin/bash

# question:設計一個shell腳本:判斷當前工作目錄下所有的文件類型,如果是目錄,顯示目錄名;如果是文件,查看文件內容;如果都不是,則顯示提示信息。

# 對某目錄下所有文件類型的判定

directoryFilesType(){ #函數:bash shell中,函數也需:先聲明,後使用。

#文件目錄的初始化

dir='';

if [ -z $1 ] #如果未指定具體路徑時

then

dir='./'; #默認:當前路徑

else

dir=$1;

fi;

i=0; #標記行號

ls -l $dir | while read line #重定向法/管道法 實現 逐行讀取文本數據

do

i=`expr $i + 1`;

if [ $i -ne 1 ] #跳過首行,首行的信息無用,形如:“总用量 172”

then

case ${line:0:1} in #${line:0:1}:截取字符串line的第[0,1]之間的字符, 即 第一位字符,該位字符表示了文件類型

'-')printf "[file]\t\t";;

'd')printf "[directory]\t";;

'b')printf "[block]\t";;

*)printf "[unknown]\t";;

esac

fi

echo $line; #輸出當前行(包括本行的換行符\n)

done

}

#判斷某具體文件路徑下的“文件”類型是什麼。給定一條明確路徑,輸出文件類型

fileType(){

if [ -f $1 ]

then

type="file"; #$0:bash;$1才是首個參數,完整的文件路徑,形如:/etc/nginx/nginx.conf

elif [ -d $1 ]

then

type="directory";

elif [ -c $1 ]

then

type="character";

elif [ -b $1 ]

then

type="block";

else

type="unknown";

fi

echo the type of \"$1\" is [$type]

return 0; #可添加函數的返回值

}

#echo `fileType filePath`

#echo $? #讀取函數的返回數值(且只能爲數值類型,範圍:[0,255])

if [ -z $1] # -z string:如果字符串爲空,則:真。

then

curentFilesType #此時,直接執行:對當前工作目錄下所有文件類型的判定

else #參數不爲空,則:判斷參數提供的文件路徑的文件類型

fileType $1#此時,直接執行:給定一條明確路徑,輸出文件類型

fi;

exit 0;

输出

:<

总用量 172

[file]-rw-rw-r-- 1 johnny johnny 2073 3月 13 13:50 Apache Tomcat.md

[file]-rw-r--r-- 1 johnny johnny 822 3月 14 19:45 demo-01-file.sh

[file]-rw-r--r-- 1 johnny johnny 745 3月 14 19:30 demo-02-array.sh

[file]-rw-r--r-- 1 johnny johnny 573 3月 14 19:45 demo-02.sh

[file]-rwx------ 1 johnny johnny 302 3月 13 19:25 demo-bash.sh

[file]-rwxrwxrwx 1 johnny johnny 8600 3月 13 10:43 hello.out

[file]-rw-rw-r-- 1 johnny johnny 211 3月 13 11:08 h.txt

[file]-rw-rw-r-- 1 johnny johnny 87 3月 13 11:08 h.txt.bz2

[file]-rw-rw-r-- 1 johnny johnny 211 3月 13 11:08 h.txt.out

[directory]drwxrwxr-x 3 johnny johnny 4096 12月 25 2017 Linux Shell

[file]-rw-rw-r-- 1 johnny johnny 4483 3月 13 15:25 nginx.md

[file]-rw-rw-r-- 1 johnny johnny 104 3月 13 18:15 text.txt

[file]-rw-r--r-- 1 johnny johnny 862 3月 14 19:20 tmp.txt

[file]-rw-rw-r-- 1 johnny johnny 108801 12月 13 2017 实验二.png

EOF

重点难点

1.Shell编程基础:管道与重定向、函数、控制语句(if、for、while、case等)、字符串处理、数组操作、变量(特殊变量)

2.逐行操作(读取)文本

Shell脚本编程扩展小练习

题目

設計Shell腳本:求控制臺給定數字X-Y之間的整數和,其中X

答案

#!/bin/bash

# 設計Shell腳本:求控制臺給定數字X-Y之間的整數和,其中X

echo "please input interger X and Y [X < Y]:";

read X Y #從控制臺讀取變量X和Y

if [ $X -ge $Y ] #如果X大於等於Y:則 置換

then

t=$X;

X=$Y;

Y=$t;

fi;

sum=0;

x=$X; #x保留X的初始值

y=$Y; #y保留Y的初始值

while [ $X -le $Y ] #-le:小於等於≤

do

sum=`expr $sum + $X`;

X=`expr 1 + $X`;

done

echo sum of [$x,$y]:$sum;

推荐文献

[1] 《Linux系统及编程基础》唐晓君 主编

linux系统及编程基础唐晓君,Linux-Shell编程之判断文件类型相关推荐

  1. 【shell编程基础0】bash shell编程的基本配置

    前面一篇"shell编程之变量篇"主要讲述下shell编程的变量的基本知识:设置变量的方式,自定义变量和环境变量的差别,变量的替换.删除.测试等. 这一篇主要是讲述在bash sh ...

  2. 视频教程-Linux系列课程(基础篇)-Linux

    Linux系列课程(基础篇) 2年JavaEE开发 ,5年资深大数据开发大牛,曾就职于蓝点科技,擅长精准广告系统开发,精通Linux操作系统! 具备丰富的大数据研发和培训经验,熟练运用Hadoop和S ...

  3. linux系统组成之小型RedHat little linux制作二

    本篇是在上篇"linux系统组成之小型RedHat little linux制作一"的基础上对微型小系统进一步完善,使其实现关机.重启等功能 ⑴.通过脚本使其微型系统实现关机.重启 ...

  4. 谈谈Linux系统CP命令如何做到0.2秒复制100G大文件?

    谈谈Linux系统CP命令如何做到0.2秒复制100G大文件? 文章目录 谈谈Linux系统CP命令如何做到0.2秒复制100G大文件? cp 引发的思考 文件系统 为什么 cp 那么快? 结语 cp ...

  5. 查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 查看Linux系统架构的命令,查看linux系统是哪种架构:AMD.ARM.x86.x86_64.pcc 文章目录: 1 ...

  6. linux如何运行verilog,linux系统下ncverilog的详细命令linux系统下ncverilog的详细命令.doc...

    linux系统下ncverilog的详细命令linux系统下ncverilog的详细命令 ncverilog: 08.10-p002: (c) Copyright 1995-2008 Cadence ...

  7. linux 系统业务迁移,记录一次linux系统迁移过程

    就在最近,终于为自己的电脑加装了固态.在装完固态之后,首先面临的问题就是如何将原先安装在机械硬盘上的linux系统迁移到固态上.还要考虑后续配置的问题. 本文主要讲述在迁移Linux系统到新的固态硬盘 ...

  8. 路由器 刷 linux系统版本,一个小型的无线路由器 Linux 系统OpenWRT[转]

    一个小型的无线路由器 Linux 系统OpenWRT分类:电脑技术 » linux应用    出处:网络   OpenWRT - (http://www.openwrt.org) 开发板: 十几种市面 ...

  9. linux系统 ghost吗,GHOST能于LINUX系统备份吗?

    使用Ghost软件来实现备份和恢复Linux系统: 1.首先用 "雨林木风 Ghost XP SP3 纯净版 Y6.0" 光盘进行引导,并使用其中的PQ软件对硬盘进行分区,划分出一 ...

  10. 计算机科学与技术学习路线编程基础四大件应用实践编程(含C++学习路线)

    计算机科学与技术学习路线&编程基础四大件&应用实践编程(含C++学习路线) 基本介绍 本人211科班出身,目前大学临近毕业,想给迷茫的同行者或者后来人一些建议和推荐,少走弯路.想想自己 ...

最新文章

  1. 32岁前平凡无奇,鼓动同事创业,最终逆袭成硅谷首富
  2. fatfree-f3小型php框架(二)
  3. QT数据库驱动和多国语言驱动部署注意事项
  4. java oscache 使用_OScache的使用(Java对象)
  5. jsp java语法_JSP基础语法
  6. why my own list cannot automatically scroll to load oData
  7. 数据结构与算法-算法入门-什么是算法-算法的挑战
  8. 二、十六进制数互相转换
  9. css设置按钮竖直方向居中_button内flex垂直居中竟然不居中的解决
  10. es6 babel编译
  11. Win10正式版激活方法有哪些?如何激活Win10?
  12. 我的是CentOS6.3+MySQL5.1.57。重启了一次服务器后,使用 mysql -u root -p登陆是出现下面的错误: ERROR 2002 (HY000): Can't connect
  13. 【linux3.10】内存反向映射中的anon_vma是per process的吗?
  14. python:shapely模块
  15. 贴图平移凹凸贴图偏移
  16. SEO搜狗批量查询收录工具
  17. 网易云音乐工程师,亲自揭晓评论实现技术!| 技术头条
  18. 史上讲解最好的 Docker 教程,从入门到精通(建议收藏的教程)
  19. 微信从原版到现在所有界面图片_微信这4张登录界面图,你见过几张?微信老用户都不一定能认全!...
  20. 硬件防火墙和软件防火墙有什么区别

热门文章

  1. Kafka 之 HW 与 LEO
  2. mac版caj阅读器怎么删除标注_CAJViewer for mac-caj阅读器Mac版下载 V1.5-PC6苹果网
  3. cocos2d AABB碰撞检测
  4. 域名解析中TTL是什么意思?
  5. 数学基础二:点到直线距离公式推导
  6. 二层交换机实现不同vlan通信
  7. Android体重档案代码,Android开发实现的标准体重计算器功能示例
  8. anywhere 无法正常使用的问题--IP地址解析
  9. K8S-Kubeadm的安装及原理
  10. 利用Volatility进行Windows内存取证分析(二):内核对象、内核池学习小记