shell练习题3】的更多相关文章

整理了一些 shell 相关的练习题,记录到这里. 1. 请按照这样的日期格式 xxxx-xx-xx 每日生成一个文件,例如:今天生成的文件为 2013-09-23.log, 并且把磁盘的使用情况写到到这个文件中. #!/bin/bash # Date: -- # Author: liwei today=$(date +%Y-%m-%d) log_file_name=/var/log/selfdefine/${today}.log /bin/df -lh > $log_file_name 然后再…
需求如下: 用shell实现,把一个文件文档中只有一个数字的行给打印出来.(以/password文件为例,自行修改) 参考解答如下 方法1 #!/bin/bash file_name=passwd num=$(awk -F: 'END{print NR}' $file_name) for i in $(seq 1 $num) do num=$(sed -n "$i"p $file_name | sed 's/[^0-9]//g' | wc -L) if [ $num -eq 1 ];t…
需求如下: 系统logrotate工具,可以完成日志切割.归档.写一个shell脚本实现类似功能. 举例:假如服务的输出日志是1.log,要求每天归档一个,1.log第二天就变成1.log.1, 第三天1.log.2,第四天l.log.3,一直到1.log.5 参考解答如下 方法1 #!/bin/bash # rem_file() { [ -f $1 ] && rm $1 } for i in $(seq 5 -1 2) do i2=$(($i-1)) rem_file /data/1.l…
需求如下: 写一个shell脚本,检查指定的shell脚本是否有语法错误,若有错误,首先显示错误信息,然后提示用户输入q或Q退出脚本, 输入其他内容则直接用vim打开该shell脚本. 参考解答如下 方法1 #!/bin/bash cmd="/bin/bash" ed="/usr/bin/vim" if [ $# -ne 1 ];then echo "USAGE:$0 script_name" exit 1 fi $cmd -n $1 if […
需求如下: 写一个shell脚本,把10.0.1.0/24网段在线的ip列出来. 参考解答如下 方法1 #!/bin/bash ip="10.0.1." for i in $(seq 1 254) do ping -c 2 $ip$i &> /dev/null if [ $? -eq 0 ] then echo The host $ip$i is online. else echo The host $ip$i is offline. fi done 方法2 ip=&qu…
一.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. 原文代码为:         Shell   1 2 3 4 5 6 7 8 9 10 #!/bin/bash if  ! grep "^#!" $1 &>/dev/null; then cat >> $1 << EOF #!/bin/bash # Author: #Date & Time: `date +"%F %T"` #Des…
1.编写脚本/bin/per.sh,判断当前用户对指定参数文件,是否不可读并且不可写 read -p "Please Input A File: " file if [ ! -e $file ];then echo "$file not exits" elif [ -f $file ];then if [ ! -r $file -a ! -w $file ];then echo "User Not read and write" else ech…
1.实现每次打开一个xx.sh时,自动添加注释信息 [root@chengyinwu ~]# cat .vimrc set ignorecase set nu set autoindent autocmd BufNewFile *.sh exec ":call SetTitle()" func SetTitle() if expand("%:e") == 'sh' call setline(1,"#!/bin/bash") call setlin…
需求如下: 输入一串随机数字,然后按千分位输出. 例如:输入随机数字为"123456789",输出为123,456,789 参考解答如下 -方法1 [root@lanquark sh]# echo "123456789" | sed '{ :start s/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/ t start }' or echo "123456789" | sed -r '{:start;s#(.*[0-9])([0…
需求如下: 有日志access.log,部分内容如下: 127.0.0.1 - - [03/Jul/2018:00:00:01 +0800] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" 127.0.0.1 - - [03/Jul/2018:00:01:48 +0800] "GET /1.php HTTP/1.1" 200 19 "-" "curl/7.29…
需求如下: 请按照这样的日期格式(xxxx-xx-xx)每天生成一个文件,例如今天生成的文件为2018-10-19.log, 并把磁盘的使用情况入到这个文件,(不需要写cron,写脚本即可) 参考解答如下 方法1 #!/bin/bash day=$(date "+%F") echo "The usage of disk" > ${day}.log df -h >> ${day}.log exit 0 方法2(取时间的格式稍有变化,与方法1基本相同)…
写一个脚本,计算100以内所有的奇数的和以及所有偶数的和,分别显示出来#! /bin/bashsum1=0for i in `seq 1 2 100`do sum1=$[$sum1+$i]doneecho $sum1 sum2=0for j in `seq 2 2 100`do sum2=$[$sum2+$j]doneecho $sum2 写一个脚本,利用RANDOM生成10个随机数,并且找出最大值和最小值 for i in `seq 1 10`do n[$i]=$RANDOM echo ${n…
1.编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到 /root/etcYYYY-mm-dd中 #!/bin/bash echo "start backup" sleep 2 date=`date "+%Y-%m-%d"` cp -av /etc /root/etc$date echo "backup finish" 2.编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值 #!/bin…
1. 获取ip或MAC地址(方法不唯一) [root@cicd ~]# ip a| grep 'inet' | awk -F " +" '{print $3}'| awk -F "/" '{print $1}' 127.0.0.1 :: 192.168.42.30 172.18.0.1 fe80:::48ff:fef9:c58e 172.17.0.1 fe80::30c5:f7ff:fe76:9ef7 fe80::10ae:aaff:fef9:171e fe80::…
本节内容 1. shell函数 2. shell正则表达式 shell函数 shell中允许将一组命令集合或语句形成一段可用代码,这些代码块称为shell函数.给这段代码起个名字称为函数名,后续可以直接调用该段代码. 格式 func() { #指定函数名 command #函数体 } 实例1: #!/bin/bash func() { echo "This is a function." } func # bash test.sh This is a function. Shell 函…
本节内容 1. shell流程控制 2. for语句 3. while语句 4. break和continue语句 5. case语句 6. shell编程高级实战 shell流程控制 流程控制是改变程序运行顺序的指令.linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介绍下,各个语句使用方法 if语句 格式: 格式:if list; then list; [ elif list; then list;…
centos  shell脚本编程2 if 判断  case判断   shell脚本中的循环  for   while   shell中的函数  break  continue  test 命令   第三十六节课 return用在函数中exit用在shell当中 直接退出整个脚本,整个子shell或当前shellbreak退出循环 上半节课 if 判断case判断shell脚本中的循环 下半节课 for whileshell中的函数breakcontinue 课程大纲(继续上节课的) 7. if…
7. if 判断一些特殊用法 if [ -z $a ] 这个表示当变量a的值为空时会怎么样if grep -q '123' 1.txt; then 表示如果1.txt中含有'123'的行时会怎么样if [ ! -e file ]; then 表示文件不存在时会怎么样if (($a<1)); then …等同于 if [ $a -lt 1 ]; then… [ ] 中不能使用<,>,==,!=,>=,<=这样的符号 if [ ! $a -gt 0 ];then... 代表不大于…
本节内容 1. shell流程控制 2. for语句 3. while语句 4. break和continue语句 5. case语句 6. shell编程高级实战 shell流程控制 流程控制是改变程序运行顺序的指令.linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介绍下,各个语句使用方法 if语句 格式: 格式:if list; then list; [ elif list; then list;…
shell函数 shell中允许将一组命令集合或语句形成一段可用代码,这些代码块称为shell函数.给这段代码起个名字称为函数名,后续可以直接调用该段代码. 格式 func() {   #指定函数名 command    #函数体 } 实例1: #!/bin/bash func() { echo "This is a function." } func # bash test.sh This is a function. Shell 函数很简单,函数名后跟双括号,再跟双大括号.通过函数…
shell 基础练习题 1.编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小 #!/bin/bash echo -e "\e[1;35mThis computer is hosted by: \e[0m" hostname echo " " echo -e "\e[1;35mMy ip addr is:\e[0m" ifconfig |…
练习题(这里贴的是自己写的代码, 网上给的题目代码我会附加在最下面) 1. 编写shell脚本,计算1-100的和: #!/bin/bash #caculate the to `; do sum=$[$sum+$i] done echo $sum 2. 编写shell脚本,要求输入一个数字,然后计算出从1到输入数字的和,要求,如果输入的数字小于1,则重新输入,直到输入正确的数字为止: #!/bin/bash read -p "please input a positive interger: &…
Shell循环练习题 目录 Shell循环练习题 1.计算从1到100所有整数的和 2.提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和 3.求从1到100所有整数的偶数和.奇数和 4.执行脚本输入用户名,若该用户存在,输出提示该用户已存在:若该用户不存在,提示用户输入密码,建立用户并设立其密码 5.检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中 6.用户输入密码,脚本判断密码是否正确,输入正确提示正确信息,连续输错3次则报警 7.编写能够自动生成一个8…
Shell条件练习题 目录 Shell条件练习题 1.检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限 2.提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提示重新输入:进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误 3.用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录 4.提示用户输入内容,使用if 语句判断输入…
下面列出了几个linux学习中的shell脚本题目 1.九九乘法表 #!/bin/bash echo "九九乘法表" # 注意((之间不能有空格.加减乘除的格式.还有转义字符\*.-ne for (( i=1; i<=9; i=i+1 )) do for (( j=1; j<=i; j=j+1 )) do ((result=$i*$j)) echo -ne $i\*$j=$result"\t" done echo done 2.求斐波那契数列的前10项及…
猜随机数的大小 描述: 写一个猜数字脚本,当用户输入的数字和预设数字(随机生成一个0-100的数字)一样时,直接退出,否则让用户一直输入:并且提示用户输入的数字比预设数字大或者小 分析: 1:随机数字是如何生成的 2:这是一个死循环,直到猜对了才能退出 3:需要判断大小 脚本实现: [root@jumpserver- scripts]# cat num_random.sh #!/bin/bash num=$(+))) i= while true do read -p "请猜一下这个数是多少:&q…
1037774765 克隆 1.创建一个用户redhat,其ID号为1001,基本组为like(组ID为2002),附近租为linux. groupadd -g 2002 likegroupadd linuxuseradd -u 1001 -g 2002 -G linux redhat 2.创建一个用户fedora,其注释信息为Fedora Commuity,默认shell为sh man useradd 查看到-c是注释 useradd -c "Fedora Commuity" -s…
1斐波拉契数列前10个  #!/binbash#declare A=0declare B=1for ((i=1;i<6;i++)); do    let A+=B    printf "%-5s" $A    let B+=A    printf "%-5s" $Bdone    printf "\n" =====================================================================…
设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30. i=1 groupadd class1 while [ $i -le 30 ] do if [ $i -le 9 ] ;then USERNAME=stu0${i} else USERNAME=stu${i} fi useradd $USERNAME chgrp -R class1 /home/$USERNAME i=$(($i+1)) done 编写shell程…
求2个数之和 计算1-100的和 将一目录下所有的文件的扩展名改为bak 编译当前目录下的所有.c文件: 打印root可以使用可执行文件数,处理结果: root's bins: 2306 打印当前sshd的端口和进程id,处理结果: sshd Port&&pid: 22 5412 输出本机创建20000个目录所用的时间,处理结果: real    0m3.367s user    0m0.066s sys     0m1.925s 打印本机的交换分区大小,处理结果: Swap:1024M…