您好,登錄后才能下訂單哦!
最近閑來無事,在網(wǎng)上搜一些shell面試題做一做,今天看到一個(gè)面試時(shí)候經(jīng)常被考的一個(gè)題,原題如下:
批量添加20個(gè)用戶到class01組,用戶名以std開頭,以數(shù)字結(jié)尾,格式:std01---std20
這個(gè)題在面試的時(shí)候貌似經(jīng)常能見到吧,大家都懂得,但是也很簡單,大家要注意題意,注意格式,要求是std01這樣的格式,如果只是一個(gè)簡單的for,用戶名很可能是std1哦。不多說,先上一下我的簡陋的腳本,一個(gè)同學(xué)說我的腳本很凌亂,哈哈,確實(shí)是凌亂在風(fēng)雨中啊。
#!/bin/sh groupadd class01 a=std for ((i=1;i<=20;i++)) do if [ $i -lt 10 ];then username="$a"0"$i" else username=$a$i fi useradd -G class01 -M $username done
在執(zhí)行腳本的時(shí)候碰到一個(gè)問題,總是提示我的第四行語法錯(cuò)誤,檢查半天也沒發(fā)現(xiàn)我這語法案例出錯(cuò)了,沒辦法只好問問Google大叔了。果然,網(wǎng)上有好多人碰到這個(gè)問題,究其原因是我的系統(tǒng)是ubuntu的,在ubuntu下,默認(rèn)的shell不是bash,而是dash,dash 比 bash 更輕,更快。但 bash 卻更常用。雖然更快更輕了,但是還是不兼容啊,沒辦法,換回來吧,解決方法:sudo dpkg-reconfigure dash,然后選擇no,好了,現(xiàn)在以及切回來了,可以正確執(zhí)行,沒問題。
接下來上一下我同學(xué)的腳本吧,雖然也不是最佳的,但是思路跟我的差不多,嚴(yán)重懷疑這哥們是不是抄襲了,哈哈,比我的還是優(yōu)化了一些。
#!/bin/bash groupadd class01 for i in {1..20} do if [ $i -lt 10 ];then useradd "std0$i" -g class01 else useradd "std$i" -g class01 fi done
好吧,其實(shí)我也沒看出號多少,哈哈~~反正都能實(shí)現(xiàn),解決問題就可以。
最后來一下我們的熱心網(wǎng)友的腳本吧,這叫一個(gè)簡練啊,一句話shell
for i in `seq -w 20`;do useradd -G class01 sdt$i;done
好吧,看了這個(gè)腳本,心里這個(gè)凌亂啊,基礎(chǔ)不扎實(shí)啊,人家一個(gè)seq -w就解決了,哎~~
seq:用于產(chǎn)生從某個(gè)數(shù)到另外一個(gè)數(shù)之間的所有整數(shù)
# seq 1 10
結(jié)果是1 2 3 4 5 6 7 8 9 10
seq的參數(shù):
-f, --format=FORMAT use printf style floating-point FORMAT (default: %g)
-s, --separator=STRING use STRING to separate numbers (default: /n)
-w, --equal-width equalize width by padding with leading zeroes
-f 選項(xiàng) 指定格式
root@addam-python:~# seq -f"%3g" 1 10 1 2 3 4 5 6 7 8 9 10
% 后面指定數(shù)字的位數(shù) 默認(rèn)是"%g",
"%3g"那么數(shù)字位數(shù)不足部分是空格
#sed -f"%03g" 1 11 這樣的話數(shù)字位數(shù)不足部分是0
root@addam-python:~# seq -f"%03g" 1 11 001 002 003 004 005 006 007 008 009 010 011
% 前面制定字符串
root@addam-python:~# seq -f "test%03g" 8 12 test008 test009 test010 test011 test012
-w 指定輸出數(shù)字同寬 不能和-f一起用
root@addam-python:~# seq -w 1 10 01 02 03 04 05 06 07 08 09 10
輸出是同寬的
學(xué)習(xí)一個(gè)腳本,同時(shí)也加固一下seq的學(xué)習(xí),好記性不如爛筆頭~~
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。