Shell练习
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练习的更多相关文章
- Shell替换
如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. #!/bin/bash a= echo -e "Value of a is ...
- Shell特殊变量
$ 表示当前Shell进程的ID,即pid $echo $$ 运行结果 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数 ...
- shell变量
定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名 ...
- 第一个shell脚本
打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...
- shell简介
Shell作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. shell使用的熟练程度反映了用户对U ...
- Shell碎碎念
1. 字符串如何大小写转换 str="This is a Bash Shell script." 1> tr方式 newstr=`tr '[A-Z]' '[a-z]' < ...
- MongoDB学习笔记二—Shell操作
数据类型 MongoDB在保留JSON基本键/值对特性的基础上,添加了其他一些数据类型. null null用于表示空值或者不存在的字段:{“x”:null} 布尔型 布尔类型有两个值true和fal ...
- 使用C#给Linux写Shell脚本
在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...
- Linux环境下shell和vim中乱码原因及消除办法
shell和vim中乱码原因及消除办法 作者:Jack47 在Linux下开发,经常遇到乱码问题:shell或者vim中显示不了中文,或者能够显示,但不能输入中文.每次都是上网去搜,或者同事告诉我一些 ...
- 【说解】在shell中通过mkfifo创建命名管道来控制多个进程并发执行
背景: 工作中有两个异地机房需要传数据,数据全名很规范,在某个目录下命名为统一的前缀加上编号.如/path/from/file.{1..100}.而机房间的专线对单个scp进程的传输速度是有限制的,比 ...
随机推荐
- Android4.0.3 USB OTG底层插入上报过程分析(1)
下面的两个宏是PM8058的MMP11(R15),MMP12(P15)管脚.#define EXT_CHG_VALID_MPP 10#define EXT_CHG_VALID_MPP_2 11 sta ...
- 用户识别APP项目开发计划书
用户识别APP项目开发计划书 项目介绍: 用户识别APP,通过在有限时间内引导用户A交互,提取用户的行为特征,然后将APP交给用户X(可能是A也可能是陌生人),在1分钟内引导X交互,判断 ...
- C++知识库
C++知识库 秒杀多线程 .
- selenium 封装代码
package pers.xeon.automate.auxt; import org.openqa.selenium.By; import org.openqa.selenium.WebElemen ...
- 由Excel表格导出Latex代码
Latex提供了不少绘制表格的宏包(参见:http://tug.org/pracjourn/2007-1/mori/),但在latex里画表并不直观,特别是在表格比较大的时候,有时候也需要先用Exce ...
- display inline-block 垂直居中
table td:after {display:inline-block;width:0;height:100%;vertical-align:middle;content:'';}
- Redis使用系列目录(一)
环境介绍 Redis 安装 Redis配置文件详解 Redis主从复制搭建 Redis集群环境搭建 Redis高可用
- [Android] Google IAP unmaneged items服务器校验
android IAP unmaneged items 服务器校验 当成功IAP以后, 会在google服务器记录此次购买的状态. 可以通过Google Play Android Developer ...
- 用SignalR实现的弹幕功能
弹幕功能通常用于实时显示当前视频或者文档的评论内容,在上快速飞过的方式呈现,看起来比较酷炫. 这种典型的多用户实时交互的功能,很适合使用SignalR实现,通过SignalR提供后台的服务推送功能,客 ...
- activity通过onActivityResult间数据交互
首先要创建2个activity 分别为MainActivity和OneActiivity MainActivity代码如下: package com.tp.soft.app; import andro ...