1   在终端下运行程序,首先清屏,然后提示:“Input a file or directory name, please!”。从键盘输入一个字符串(如:xxx),如果该字符串是目录,则显示:“xxx is a directory.”;如果该字符串是文件(如:xxx),则显示:“xxx is a regular file.”;如果既不是目录也不是文件,则显示:“This script cannot get the file/directory xxx information!”。

#! /bin/bash
echo "Input a file or directory name, please!"
read file
if [ -d $file ]
then
echo "$file is a directory."
elif [ -f $file ]
then
echo "$file is a regular file."
else
echo "This script cannot get the file/directory xxx information!"
fi

2  在终端下运行程序,首先清屏,然后提示:“Input your age!”。从键盘输入你的年龄(如:22),如果年龄在20-29,则输出“Please go to room 101!”;如果年龄在30-39,则输出“Please go to room 201!”;如果年龄在40-49,则输出“Please go to room 301!”;如果年龄在50-59,则输出“Please go to room 401!”;如果年龄在60-69,则输出“Please go to room 501!”;如果年龄不在上述范围,则输出“Please wait at the door!”;

#! /bin/bash
clear
echo "please input your age!"
read age
a=` expr $age / `
case $a in
)
echo "Please goto room 101"
;;
)
echo "Please goto room 201"
;;
)
echo "Please goto room 301"
;;
)
echo "Please goto room 401"
;;
)
echo "Please goto room 501"
;;
*)
echo "Please wait at the door!"
;;
esac

3  程序中循环列表为某一目录下的所有子目录和文件,运行程序,列出该目录下的所有文件。(这个需要使用 bash ***.sh执行,上面两个可以直接sh ***.sh)

#! /bin/bash
function ergodic() {
for file in ` ls $ `
do
if [ -d $"/"$file ]
then
ergodic $"/"$file
else
echo $"/"$file
fi
done
}
INIT_PATH="./test"
ergodic $INIT_PATH

4 运行文件时,显示文件后所带的参数。例如所编辑的文件名为 shi3.sh,运行该文件:

Shi1.sh She He It
显示:
She
He
It

牵扯到通配符

http://blog.csdn.net/qzwujiaying/article/details/6371246

在手工处理方式中,首先要知道几个变量,还是以上面的命令行为例:
* $0 : ./test.sh,即命令本身,相当于C/C++中的argv[0]
* $1 : -f,第一个参数.
* $2 : config.conf
* $3, $4 ... :类推。
* $# 参数的个数,不包括命令本身,上例中$#为4.
* $@ :参数本身的列表,也不包括命令本身
* $* :和$@相同,但"$*" 和 "$@"(加引号)并不同,"$*"将所有的参数解释成一个字符串,而"$@"是一个参数数组。

#! bin/bash

for arg in "$@"
do
echo $arg
done

5 运行文件时,指定备份当前目录下的目录或文件。例如:当前目录下有目录 test_dir

和文件 file1.h ,执行备份功能的脚本文件 beifeng.sh
./ beifeng.sh test_dir file1.h
显示:
Backup Process Begins
2015-05-20-16-35-55 SUCCESS in backup file/directory(test_dir)
2015-05-20-16-35-55 SUCCESS in backup file/directory(file1.h)
Backup Process Ends同时将显示的信息保存到日志文件里,日志文件的名称由备份时的时间确定,如
2015-05-20-16-35-55.log
日志文件和备份文件存放在定义好的备份目录里。

#! /bin/sh

#get time
YY=`date +%Y`
MO=`date +%m`
DD=`date +%d`
HH=`date +%H`
MU=`date +%M`
SS=`date +%S`
TIME=$YY-$MO-$DD-$HH-$MU-$SS
#tar
for arg in "$*"
do
ORINGIN=${arg}
done
echo $ORINGIN
tar -zcvf $TIME.tar.gz $ORINGIN
#log
echo "Backup Process Begins"
for arg in "$@"
do
echo "$TIME SUCCESS in backup file/directory($arg)"
echo "$TIME SUCCESS in backup file/directory($arg)">>$TIME.log done
mv $TIME.tar.gz ./bak
mv $TIME.log ./log

Shell练习的更多相关文章

  1. Shell替换

    如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. #!/bin/bash a= echo -e "Value of a is ...

  2. Shell特殊变量

    $ 表示当前Shell进程的ID,即pid $echo $$ 运行结果 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数 ...

  3. shell变量

    定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名 ...

  4. 第一个shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...

  5. shell简介

    Shell作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. shell使用的熟练程度反映了用户对U ...

  6. Shell碎碎念

    1. 字符串如何大小写转换 str="This is a Bash Shell script." 1> tr方式 newstr=`tr '[A-Z]' '[a-z]' < ...

  7. MongoDB学习笔记二—Shell操作

    数据类型 MongoDB在保留JSON基本键/值对特性的基础上,添加了其他一些数据类型. null null用于表示空值或者不存在的字段:{“x”:null} 布尔型 布尔类型有两个值true和fal ...

  8. 使用C#给Linux写Shell脚本

    在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...

  9. Linux环境下shell和vim中乱码原因及消除办法

    shell和vim中乱码原因及消除办法 作者:Jack47 在Linux下开发,经常遇到乱码问题:shell或者vim中显示不了中文,或者能够显示,但不能输入中文.每次都是上网去搜,或者同事告诉我一些 ...

  10. 【说解】在shell中通过mkfifo创建命名管道来控制多个进程并发执行

    背景: 工作中有两个异地机房需要传数据,数据全名很规范,在某个目录下命名为统一的前缀加上编号.如/path/from/file.{1..100}.而机房间的专线对单个scp进程的传输速度是有限制的,比 ...

随机推荐

  1. ContentProvider跨进程共享数据

    借用ContentResolver类访问ContentProvider中共享的数据.通过getContentResolver()方法获得该类的实例. ContentResolver中的方法:inser ...

  2. 【转】关于 mate viewport属性的具体说明!

    什么是Viewport 手机浏览器是把页面放在一个虚拟的"窗口"(viewport)中,通常这个虚拟的"窗口"(viewport)比屏幕宽,这样就不用把每个网页 ...

  3. 超炫数字特效动画AE模板

    下载方式: 网盘地址+迅雷地址+迅雷地址+备份地址 <ignore_js_op> 本AE模板是由Videohive机构出品的超炫数字特效动画AE模板,Videohive The Numbe ...

  4. Mifare系列7-安全性(转)

    文/闫鑫原创转载请注明出处http://blog.csdn.net/yxstars/article/details/38087245 飞利浦的MIFARE卡 由于它的高安全性在市场上得到广泛应用,比如 ...

  5. 自定义一个类似UIAlertView的弹出框

    这个是和UIAlertView类似,但是可以自定义view的样式废话不多说,上代码: 首先第一步:创建一个继承自View的类如: #import <UIKit/UIKit.h> @clas ...

  6. 工作中最常用的Excel函数公式大全

    电脑那些事儿2016-05-18 22:23:02微软 公式 工作阅读(22574)评论(1) 声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场.举报 Wo ...

  7. git备份sublime插件及配置

    github备份sublime配置 sublime使用的时间长了,渐渐的就积累了一些有用甚至离不开的插件.但是有时候系统会出点问题,或者换电脑什么的,这时候要想在找回那个曾经的sublime就不那么容 ...

  8. winform右下角弹窗

    网页是否经常在电脑右下角弹窗显示消息?其实Winform也是可以实现的.下面介绍两种方法. 第一步:设计窗体 第二步:实现代码 第一种方法 引用user32 声明常量 窗体Load事件 窗体FormC ...

  9. 参考__MySql

    博客 三范式 事务隔离级别 列表

  10. AngularJS select中ngOptions用法详解

    AngularJS select中ngOptions用法详解   一.用法 ngOption针对不同类型的数据源有不同的用法,主要体现在数组和对象上. 数组: label for value in a ...