shell练习

Shell练习

网络站在试题!!!
1.编写1-100的累加
分析:此题要考虑如何得到这100个数并且将他们累加,用for循环这100个数或{1…100},seq 100 等来将这100个数得到,再用$引用数来累加。

#!/bin/bash
# 编写1到100的累加结果
for i in `seq 100`
do
sum=$(($sum+$i))
done
echo $sum

2.把/root/目录下的所有目录(只需要一级)拷贝到/tmp/目录下
分析:此题要注意只要/root下的目录且是一级目录(可以理解成只要一级目录名),如果用cp目录话会把目录下的内容复制,不符合题目要求,可以删除比较麻烦。

#!/bin/bash
# 把/root/目录下的所有目录(只需要一级)拷贝到/tmp/目录下;
cd /root/
for file in `ls`
do 
  if [ -d $file ]
  then
    mkdir /opt/$file 
    echo "succeed"
  fi
done 

3.在/root/tast/目录下的所有文件(不含目录)的文件名后面加.bak。分析:本题其实主要考察如何给一个目录下的所有文件名加后缀,得到所有文件方法较多,改后缀可以用mv。

find /root/tast -type f -exec mv {} {}.bak \;

4.输入一个数并进行是否为正整数判断,为正整数则输出1到这个数的累加结果·
分析:练习这种题可以自己扩展考虑一些问题,如:输入空该如何,输入不是数字呢,等等;

#!/bin/bash
# 输入一个数并进行是否为正整数判断,为正整数则输出1到这个数的累加结果·
while :
do 
read -p "请输入一个正整数 :" n
if echo $n | grep -q '[^0-9]'
then
  echo "你没有输入一个正整数!"
  continue
fi
if [ ! -n "$n"  ]
then
  echo "你没有输入一个正整数!"
  continue
fi
if [ $n -lt 1 ]
then 
  echo "你没有输入大于1的数! "
  continue
fi
for i in `seq $n`
do 
  j=$(($j+$i))
done
echo $j
exit
done 

5.批量建立用户,要求用户名的格式为user_00/user_01,建立100个,且用户同属于users组。
分析:本题要考的是如何创建用户并且指定用户组,可去查看useradd的参数应用,其次如何输出00-09的格式,可以分开两次创建00-09再10-100比较麻烦,用 seq -w 可以直接实现00这样的格式。

#!/bin/bash
# 批量建立用户,要求用户名的格式为user_00/user_01,建立100个,且用户同属于users组
groupadd users
for i in `seq -w 0 100`
do
useradd -g users user_$i
done

6.编写九九乘法表
分析:本题主要是两个九的循环,输出格式上可看echo 的参数应用。

#!/bin/bash
# 编写九九乘法表
for i in `seq 9`
do 
 for j in `seq $i`
    do
    k=$[$i*$j]
      echo -ne "$i""x""$j=$k\t"
    done
  echo " "
done
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值