求帮写个简单的shell脚本文件,在线等
发布网友
发布时间:2022-05-12 19:48
我来回答
共4个回答
热心网友
时间:2023-10-20 05:51
#!/bin/sh
i=0
while true
do
let i+=1
[ $i -eq 10 ] && exit 0
$index=`printf "%03d" $i`
command -i ${index}_input -o ${index}_output
while true
do
grep "abcdefg" ${index}_output >/dev/null 2>&1
[ $? -eq 0 ] && break
sleep 1 # usleep 200000 根据command命令执行快慢选用一个合适的值
done
done追问xxx 是一个命令
就是提交一个命令
command -i 001_input -o 001_output
(001_input是输入,001_output是输出)
当001_output文件中出现字符串“abcdefg”时提交:
command -i 002_input -o 002_output
这样一直提交到009
谢谢
追答看到你的补充回答,刚刚正在更新中,脚本在上面,请看看是否符合你的要求。
第一个while true用于循环执行command命令(数字递增),第二个while true用于循环等待"abcdefg”在output文件中出现。
热心网友
时间:2023-10-20 05:52
好模糊,你还是把具体要实现的功能说一下吧。追问谢谢你的回答
我补充问题了,不知道说清楚没有
追答哦,这样啊,那简单写个思路吧。
用 while do循环和if判断
set x=001 #设置变量x为001 (貌似00x不好计算,不行就换成1-9吧)
while 直到x=009
do
你的命令 "$x"_input -o "$x"_output
if [你的output结果=abcdefg] then;
把变量x用 expr+1
fi
#再做个判断
if [x=009] then;
break;
fi
done
大体这个思路吧,你写写试试。
热心网友
时间:2023-10-20 05:52
Shell脚本基础
一 输入输出和管道符
1过滤“/etc/inittab”文件中以“#”和非空行,并将结果定向到“inittab.txt”文件中
2查找以Bash作为Shell登录,名称以“a”开头,并且只显示登录名和Shell两个字段(1,7)
3查询当前系统的总内存空间,剩余空间以(MB)显示,并输出Total和Used两个字段(2,4)
4统计当前登录到本地终端(tty1~tty6)中的所有用户数量
5 查看“/boot”分区的磁盘使用率,并去除“%”
二 数值变量的运算
Ø “+” 加法运算
Ø “—” 减法运算
Ø “\*” 乘法运算
Ø “/” 除法运算
Ø “%” 取余运算
用法:expr 变量1 运算符 变量2 [ 运算符 变量3 .......]
三 Shell预定义变量
Ø $# 表示命令行中位置参数的数量
Ø $* 表示所有位置参数的内容
Ø $? 表示命令行执行后返回的状态
Ø $$ 表示当前进程的进程号
Ø $! 表示后台运行的最后一个进程的进程号
Ø $0 表示当前执行的进程的进程名
四 Shell自定义变量
1) 双引号(“”) 可以使用“$”调用其它变量值
2) 单引号(‘’) 不允许引用其它变量,“$”符号或其它符号视为普
通字符看待
3) 反撇号(` `) 反撇号内必须为可执行的命令
4) read命令 可以从终端(键盘)读取输入,实现简单的交互过程
read -p 可设置输入提示信息
五 条件测试
用法: test 条件表达式
[ 条件表达式 ]
Ø 测试文件状态
-d 测试是否为目录(directory)
-f 测试是否为文件(file)
-e 测试文件是否存在(exist)
-r 测试文件是否有可读权限(read)
-w 测试文件是否有写入权限(write)
-x 测试文件是否有执行权限(excute)
-L 测试文件是否是链接文件(Link)
Ø 整数比较
-eq 比较第1个数等于第2个数(equal)
-ne 比较第1个数不等于第2个数(not equal)
-gt 比较第1个数大于第2个数(greater than)
-lt 比较第1个数小于第2个数(lesser than)
-le 比较第1个数小于或等于第2个数(lesser or equal)
-ge 比较第1个数大于或等于第2个数(greater or equal)
Ø 字符串比较
= 匹配
!= 不匹配
-z 文件是否为空
Ø 逻辑测试
&& 逻辑与(表示两个表达式都为真,结果为真,可改为【-a】)
|| 逻辑或(表示两个表达式有一个为真,结果为真,可改为【-o】)
! 逻辑否(表示测试条件不成立时,结果为真)
六 Shell语句
Ø if语句结构
1) 单分支的if语句
if [条件测试语句]
then
命令序列
fi
2) 双分支的if语句
if [条件测试语句]
then
命令序列1
elase
命令序列2
fi
3) 多分枝的if语句
if [条件测试语句1]
then
命令序列1
elif [条件测试语句2]
then
命令序列2
else
命令序列3
fi
Ø for循环语句结构
for 变量名 in 取值列表
do
命令序列
done
Ø While循环语句结构
while [条件测试命令]
do
命令序列
done
Ø Case语句结构
case 变量名 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
......
*)
默认执行的命令序列
esac
Ø until语句结构
until [条件测试命令]
do
命令序列
done
Shell脚本案例
Set 命令可以查看当前系统下的所有变量
1 将“/var/ftp/pub”下的文件子目录以及文件的详细信息列表和当地时间追加到“/var/log/pubdir.log”日志文件中,然后再清除该目录中的内容。
2 统计“/var/lib/mysql”数据库目录的大小,将备份日期,目录大小等信息保存到临时文件“/tmp/dbinfo.txt”文件中,然后使用“tar”命令将dbinfo.txt文件和数据库目录一同备份到“/opt/dbbak”目录中。(备份文件名中要有当日日期)
3 提示用户指定备份路径,若目录一存在则显示提示信息后跳过,若目录不存在则在显示 提示信息后创建该目录。
4 比较由键盘输入的两个数字的大小并显示最终结果。
5 统计当前终端登录人数是否大于3人,若大于3则显示总登录人数;反之显示登录用户名和所在终端。
6 查看“portmap”的进程是否存在,若存在则输出服务正在运行;反之检测“protmap”的可执行启动脚本是否存在,若存在则启动该脚本,否则提示“no portmap script file”.
7 检测MySQL数据库的运行状态,若服务终止,则将该事件(包括时间)追加到到系统日志,并重启MySQL服务;否则不采取任何操作。
8 利用循环语句依次显示三条记录
9 查看由用户输入目录中的所有文件和目录,对于是登录shell为“/bin/bash”且拥有的目录和文件总数大于100个的用户,列出具体的用户名和总数值。
10 统计用户输入目录内所有以“.conf”的后缀名的配置文件所占的空间大小。
11 由键盘输入一个大于1的数值,并计算出1到这个数之间连续的数值之和。
12 批量添加20个用户,并且用户名以“user”开头”,初始化密码为“123456”。
13 使用“while”语句批量删除以“user”开头的用户。
14 使用“until”语句批量删除以“user”开头的用户。
15 由用户输入一个字符,判断该字符属于【a-z】,【A-Z】或者是【0-9】内,并输出信息。
15 计算多个数之和,其数值在执行脚本时由用户作为命令参数时给出。
16
热心网友
时间:2023-10-20 05:53
完全没看懂 #_#!!!