一个简单的壳面试题引发的总结

  

,最近闲来无事,在网上搜一些壳面试题做一做,今天看到一个面试时候经常被考的一个题,原题如下:

,,批量添加20个用户到class01组,用户名以std开的头,以数字结尾,格式:std01——-std20

,这个题在面试的时候貌似经常能见到吧,大家都懂得,但是也很简单,大家要注意题意,注意格式,要求是std01这样的格式,如果只是一个简单的,用户名很可能是std1哦。不多说,先上一下我的简陋的脚本,一个同学说我的脚本很凌乱,哈哈,确实是凌乱在风雨中啊。

,

 # !/bin/sh
  groupadd class01
  一个=性病
  ((i=1; i<=20,我+ +))
  做
  如果(我lt 10美元);
  用户名=" $ " 0 "美元我”
  其他的
  用户名=$ $我
  fi
  useradd - g class01 - m美元的用户名
  做

在执行脚本的时候碰到一个问题,总是提示我的第四行语法错误,检查半天也没发现我这语法案例出错了,没办法只好问问谷歌大叔了。果然,网上有好多人碰到这个问题,究其原因是我的系统是ubuntu的,在ubuntu下,默认的壳不是bash,而是冲刺,冲刺比bash更轻,更快。但bash却更常用。虽然更快更轻了,但是还是不兼容啊,没办法,换回来吧,解决方法:sudo dpkg-reconfigure破折号,然后选择不,好了,现在以及切回来了,可以正确执行,没问题。

,接下来上一下我同学的脚本吧,虽然也不是最佳的,但是思路跟我的差不多,严重怀疑这哥们是不是抄袭了,哈哈,比我的还是优化了一些。

,

 # !/bin/bash
  groupadd class01
  因为我在{20}1 . .
  做
  如果(我lt 10美元);
  useradd std0 $ i - g class01
  其他的
  useradd性病$ i - g class01
  fi
  完成了

,好吧,其实我也没看出号多少,哈哈~ ~反正都能实现,解决问题就可以。

,最后来一下我们的热心网友的脚本吧,这叫一个简练啊,一句话壳

,

我的seq - w 20;做useradd - g class01 sdt我美元;做

,好吧,看了这个脚本,心里这个凌乱啊,基础不扎实啊,人家一个seq - w就解决了,哎~ ~

, <强>:用于产生从某个数到另外一个数之间的所有整数
# seq 1 10
结果是1 2 3 4 5 6 7 8 9 10
, <强> seq的参数:
- f,——格式=格式,,,使用printf样式浮点格式(默认值:% g)
- s,——分隔符=字符串,使用字符串来单独的数字(默认值:/n)
- w,——equal-width,,,宽度,平衡填充用前导零

- f选项,指定格式

 root@addam-python: ~ # seq - f“% 3 g“1 10
  1
  2
  3.
  4
  5
  6
  7
  8
  9
  10 

%后面指定数字的位数默认是“% g”,

“% 3 g”那么数字位数不足部分是空格
# sed - f“% 03 g”1 11这样的话数字位数不足部分是0

 root@addam-python: ~ # seq - f”% 03 11 g”1
  001
  002
  003
  004
  005
  006
  007
  008
  009
  010
  011年

%前面制定字符串

 root@addam-python: ~ # seq - f”测试% 03年8 g”12
  test008
  test009
  test010
  test011
  test012 


- w指定输出数字同宽,不能和- f一起用

 root@addam-python: ~ # seq - w 1 10
  01
  02
  03
  04
  05
  06
  07
  08
  09
  10 

输出是同宽的

学习一个脚本,同时也加固一下seq的学习,好记性不如烂笔头~ ~

一个简单的壳面试题引发的总结