无标题文档
wdCP系统 (介绍,功能特性,运行环境,安装说明,演示,常见问题,使用教程) wdCDN系统 (介绍,功能特性,运行环境,安装说明,演示,常见问题,使用手册)
wdOS系统 (介绍,功能特性,运行环境,安装说明,演示,常见问题,使用教程) wdDNS系统 (介绍,功能特性,运行环境,安装说明,演示,常见问题,使用手册)
注册 发贴 提问 回复-必看必看 wddns免费智能 DNS 开通 本地或虚拟机使 用wdcp 一键包在mysql编 译时"卡住"
【300G高防】双线 无视攻击 wdcp官方技术支持/服务 阿里云8折优惠券 无敌云 腾讯云优惠中,现注册更有260代金额券赠送
返回列表 发帖
提问三步曲: 提问先看教程/FAQ索引(wdcp,wdcp_v3,一键包)及搜索,会让你更快解决问题
1 提供详细,如系统版本,wdcp版本,软件版本等及错误的详细信息,贴上论坛或截图发论坛
2 做过哪些操作或改动设置等

温馨提示:信息不详,很可能会没人理你!论坛有教程说明的,也可能没人理!因为,你懂的

[分享] 分享一些简单的shell脚本

本帖最后由 marquis 于 2013-7-16 22:28 编辑

1、设计一个程序cuts,它由标准输入读取数据,获取有第一个参数n和第二个参数m所限定范围的数据,nm都是整数,即从输入的字符串中抽取第n个字符至第m个字符之间的所有字符(包括这两个字符)并显示出来。

$ cuts 11 14

This is a test of cuts program(回车)

test(显示结果)

      #!/bin/bash    它的作用就是告诉shell,里面的脚本使用那种解析器来执行的脚本
      read ch;
      echo $
ch| cut -c $1-$2; #$1和$2分别是命令的第一个和第二个数
      exit;

cut是以每一行为一个处理对象的, 字符(characters),用选项-c,中文字符和空格都算一个字符

2、利用for循环将当前目录下的.c文件移到指定的目录下,并按文件大小排序,显示移动后指定目录的内容。

#!/bin/bash

for file in `ls|grep “.*.c”`     要用到ESC 下面的符号

{

mv -i $file./a   -i是文件移动同文件名会有提示

}

ls –lS ./a     -S是按大小排序

3、编写一个shell脚本,求斐波那契奇数列的前10项及总和。

#!/bin/bash

i=1

j=0

sum=0

for(( k=0; k<10; k++ ))

do

echo –n “$i,”    -n不能再最后换行 echo输出流

let sum+=I       let linux的整数运算命令

let m=i

let i+=j

let j=m

done

echo “sum=$sum”

4、编写一个shell脚本,程序运行时,要求输入两个数字。然后判断数字的大小,如果两个数字的和大于100,就输出“x+y>100;如果两个数字的和小于等于100并且大于10,就输出“x+y>10;如果x>y,则求出x除以y的余数并输出“x mod y = ?(把计算的值代替问号)”,否则求出y除以x的余数并输出“y mod x = ?

#!/bin/bash

QQ图片20130716221706.jpg


-gt:大于   -le:小于等于    如果上一条命令执行后的结束代码不是0则执行下面的命令(then

5、编写一个shell脚本,并利用函数实现数列求和运算。即主程序接受两个数字,分别作为数列头和数列尾,如果第一个数字不小于第二个数字则输出“wrong number”,否则将这两个数字传递给函数;函数把这两个数字中间的数字加起来求和,并输出。

如:当输入  3   6时,函数计算 3+4+5+6的值并输出。

QQ图片20130716221723.jpg


Function shulie()是一个函数,shulie $a $b 是传递参数给函数

6、编写特洛伊木马shell脚本。以文本方式登陆界面,接收用户输入的名字和密码。一旦用户在这种伪装界面登陆,就获取用户名和密码,并保存在指定的文件中。接着睡眠几秒,然后显示录入错误的信息,使用户以为输入有误。最后在调用真正的登陆程序,允许用户正常登陆。


7、编写shell脚本,创建一个5个元素的数组,输出各个元素的值

      QQ图片20130716221732.jpg

A是数组名,初始化A数组的值,以空格隔开

8、编写一个脚本,用于统计所指定文件的行数总数。输出结果为各个文件的名字+行数,以及总行数。

如:当输入./脚本名 file1 file2,脚本计算file1file2两个文件的总行数

QQ图片20130716221755.jpg


-l 是统计行数的参数

9、编写一个shell脚本,根据键盘输入的值,给出对应的提示;输入[A – Z ],输出Uppercase Letter;输入[a-z],输出Lowercase Letter;输入[0-9],输出Digit;输入其他,输出Punctuation,whitespace, or other

      QQ图片20130716221805.jpg

1. 在脚本最前面加入如下句: export LC_ALL=C
   
作用就是 specifies the ANSI C locale
2.
将判断条件作如下改动(改为符合POSIX标准的集合):
[A-Z]
改为 [[:upper:]]
[a-z]
改为 [[:lower:]]

Case要在每个条件末尾加;; esac

10、编写shell脚本,提示用户输入用户名,并判断此用户名是否存在与系统用户中

      QQ图片20130716221813.jpg

grep "$name"/etc/passwd > /dev/null 2>&1  

//探索与变量name内相匹配的字符
不管结果是是否正确信息扔到/dev/null垃圾箱
2>&1
不显示任何信息操作信息


if [ $? -eq 0 ] ;then            
//
判断$? 是否等于 0 $?里的数值跟你上一个命令执行的成功与否有关
//
如果你可以通过输入一条命令进行试验
然后通过
//pwd;echo $? $?
结果为0
//asdfasdf;echo $?
结果127

返回列表