shell之脚本练习

做一个需求流程图

需求分析-方案设计-具体实现

训练点
sed,echo,test,if,while,shift

1.
需求分析:练习test的-d
方案设计:体现的是思路,先定义一个变量,用条件去判断
具体实现:
输入:如下
[[email protected]250-shiyan sh]# cat > mytest
a=/root/sh/sed
if [ -d $a ]
then
echo "$a is a directory"
fi
输出:正确满意
[[email protected]250-shiyan sh]# chmod u+x mytest
[[email protected]250-shiyan sh]# ./mytest
/root/sh/sed is a directory

2.
需求分析:上一步虽然实现,但只有一个目录,并且是死的,不灵活。并且如果不是目录,没有相应的输出。
方案设计:把目录换成文件,加入非目录时的输出。
具体实现:用sed在命令行直接修改源文件。即可
要点:-e,多次编辑要用到。
输入:如下
[[email protected]250-shiyan sh]# sed -i -e ‘s/sed/mem/‘ -e ‘/echo/a\\else echo "$a is a file"‘ mytest
输出:正确满意
[[email protected]250-shiyan sh]# ./mytest
/root/sh/mem is a file

3.
需求分析:将目录在脚本里定死,不方便,如何去在命令行传入文件名参数,这样就方便了。
方案设计:
具体实现:用sed在命令行直接修改源文件,注释掉第一行
输入:如下
[[email protected]250-shiyan sh]# sed -i -e ‘1s/a/#&/‘ -e ‘s/\$a/\$1/‘ mytest
[[email protected]250-shiyan sh]# cat mytest
#a=/root/sh/mem
if [ -d $1 ]
then
echo "$1 is a directory"
else echo "$1 is a file"
fi
输出:正确满意
[[email protected]250-shiyan sh]# ./mytest for
for is a file
[[email protected]250-shiyan sh]# ./mytest awk
awk is a directory

4.
需求分析:如果能在命令行测试多个文件或目录就好了
方案设计: 每次循环时加入一个条件判断即可,并相应输出。
具体实现:用while循环与shift来实现位置参数个数的不确定,
要点:until循环和while循环的结构基本相同,但是until是判断条件表达式为假时才继续循环!
难点:
-n是用来测试字符串是否为空的
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
该变量包含了所有输入的命令行参数值。如果您运行showrpm openssh.rpm w3m.rpm webgrep.rpm
此时 $* 包含了 3 个字符串,即openssh.rpm, w3m.rpm and webgrep.rpm.
输入:如下
[[email protected]250-shiyan sh]# vi mytest1
while [ -n "$*" ]
do
if [ -d $1 ]
then
echo "$1 is a directory"
else echo "$1 is a file"
fi
shift
done
输出:正确满意
[[email protected]250-shiyan sh]# ./mytest1 awk for fr sed sel
awk is a directory
for is a file
fr is a file
sed is a directory
sel is a file
时间: 2025-01-05 04:35:41

shell之脚本练习的相关文章

shell编程脚本语法

学习了两个月的Linux,记住了很多命令,知道了脚本的作用,也被脚本杀死了大概一半的脑细胞,现在脚本还不能熟练运用,感觉亏了.心疼我的脑细胞,痛恨脚本,但不得不说,脚本是一个好东西啊,用起来真的方便,但是写起来真的烧脑袋呦!下面来总结一下这周学习的脚本语法,哇,语法虽然不多也不难,但是结合起来熟练运用还有一定的难度,何况现在的脚本才几行,以后要写几行,心里没点数吗!废话少说,开始 跳过最基础的命令行堆积的脚本,总结一下让脚本更简洁实用的语法 首先,条件选择if语句登场 if语句用法:常见的单分支

怎么在命令模式下使用adb / 进入adb shell(脚本)

1.打开winows菜单,输入cmd命令,点击确定,进入命令模式下. 2.输入命令 D:(这里输入的D表示你的sdk存放的盘下) 然后回车输入cd 3.然后选择你sdk路径,复制路径. 4.鼠标点击cmd,选择编辑,选择粘贴 将复制的路径粘贴到 命令行 回车. 5.然后输入命令adb start-service 打开adb. 出现如图所示,表示adb服务开启成功,就可以使用adb命令了. 6.使用adb  shell 命令.--- 进入adb shell(脚本) 原文:http://jingya

shell之脚本实例

一 检查用户是否是root权限的方式:#!/bin/bashROOT_UID=0 # Root has $UID 0.E_WRONG_USER=65 # Not root? E_NOSUCHUSER=70SUCCESS=0 if [ "$UID" -ne "$ROOT_UID" ]then echo echo "Only root can run this script." echo exit $E_WRONG_USERelse echo ech

linux下的shell和脚本

1.各种Unix shell linux下的shell基本是从unix环境中的shell发展而来,贴一下wiki:其中我们常用的,可归类为Bourne Shell(/usr/bin/sh或/bin/sh).Bourne Again Shell(/bin/bash).C Shell(/usr/bin/csh).K Shell(/usr/bin/ksh).Shell for Root(/sbin/sh),等等 第一个Unix shell是由肯·汤普逊,仿效Multic上的shell所实现出来,称为s

【Telnet】使用Telnet协议连接到远程Shell执行脚本

介绍 本文介绍如何通过Telnet协议连接到远程Shell,执行脚本,并获取执行结果: 相关文章: <[Jsch]使用SSH协议连接到远程Shell执行脚本>http://www.cnblogs.com/ssslinppp/p/6244653.html 其他示例: http://commons.apache.org/proper/commons-net/examples/telnet/TelnetClientExample.java http://www.programcreek.com/ja

Linux shell 自启动脚本写法

# ********************************************************************** # Linux shell 自启动脚本写法 # 说明: # 我们在做系统的时候,写自启动脚本是常有的事,下面是一个样板分析. # # 2017-1-10 深圳 南山平山村 曾剑锋 # ********************************************************************** #!/bin/sh # 脚本

「笔记」「ubuntu」mint个人shell样式脚本

alias ll='ls -al' use_color=false # Set colorful PS1 only on colorful terminals.# dircolors --print-database uses its own built-in database# instead of using /etc/DIR_COLORS.  Try to use the external file# first to take advantage of user additions. 

linux 下shell 编写脚本

linux 下shell 编写脚本: 1.程序结构练习:编写一个脚本,给定一个正整数,计算出这个数所有位的数字之和. 例如:程序给定输入123,那么应该返回1+2+3=6. 2.程序结构练习:编写一个脚本,给定一个正整数,反序输出这个这个数. 例如:程序输入123,那么应该输出321. 3.Linux命令+shell编程:编写一个程序,实现定时文件备份的功能. 要求: 1.备份某个目录下的所有文件 2.对备份文件进行压缩 3.生成合理的日志文件 4.Shell下的gui(libnotify-bi

python 捕获 shell/bash 脚本的输出结果

#!/usr/bin/python## get subprocess module import subprocess ## call date command ##p = subprocess.Popen("date", stdout=subprocess.PIPE, shell=True) ## Talk with date command i.e. read data from stdout and stderr. Store this info in tuple ## Inte

SHELL创建脚本工具

每次新建一个脚本的时候都,都要在脚本前面加上#!/bin/bash等一些固定格式的文本,这个bash脚本创建脚本可以自动添加解释器为bash.日期作者等一些信息.并且在创建完成后自动检查语法是否有错误,如果有错误它会帮你用vim打开,并且定位到出现语法问题的行.如果语法有错误,会强制不让你退出.要退出按ctrl+c键.给如果创建是的bash脚本文件,会给此文件加执行权限. 使用方法:在此脚本后面跟上你要创建的文件名,文件名要以.sh结尾,否则不会当作脚本文件. #./create.sh  new