天天看點

Shell中SEQ妙用

批量添加20個使用者到class01組,使用者名以std開頭,以數字結尾,格式:std01---std20

方法1

<code>#!/bin/sh</code>

<code>groupadd class01</code>

<code>a=std</code>

<code>for</code> <code>((i=1;i&lt;=20;i++))</code>

<code>do</code>

<code>if</code> <code>[ $i -lt 10 ];</code><code>then</code>

<code>username=</code><code>"$a"</code><code>0</code><code>"$i"</code>

<code>else</code>

<code>username=$a$i</code>

<code>fi</code>

<code>useradd</code> <code>-G class01 -M  $username</code>

<code>done</code>

方法2:

<code>#!/bin/bash</code>

<code>for</code> <code>i </code><code>in</code> <code>{1..20}</code>

<code>if</code>  <code>[ $i -lt 10 ];</code><code>then</code>

<code>useradd</code> <code>"std0$i"</code> <code>-g class01</code>

<code>useradd</code> <code>"std$i"</code> <code>-g class01</code>

方法3:  此方法最簡單高效,善用seq,會有意想不到效果

for i in `seq -w 20`;do useradd -G class01 sdt$i;done

seq的參數:

-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 選項   指定格式

seq -f"%3g" 1 10

% 後面指定數字的位數 預設是"%g",

"%3g"那麼數字位數不足部分是空格

# seq -f"%03g" 1 11

001

002

003

004

005

006

007

008

009

010

011

% 前面指定字元串,sed -f"%03g" 1 11 這樣的話數字位數不足部分是0

# seq -f "test%03g" 8 12

test008

test009

test010

test011

test012

-w 指定輸出數字同寬   不能和-f一起用

# seq -w 1 10

輸出是同寬的

本文轉自 boy461205160 51CTO部落格,原文連結:http://blog.51cto.com/461205160/1920294

繼續閱讀