,最近闲来无事,在网上搜一些壳面试题做一做,今天看到一个面试时候经常被考的一个题,原题如下:
,,批量添加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的学习,好记性不如烂笔头~ ~