Shell中SEQ妙用

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

#!/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

方法2:

#!/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

方法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
输出是同宽的

时间: 2024-10-05 08:59:04

Shell中SEQ妙用的相关文章

一次shell中seq的处理

一次shell中seq的处理 背景:用要shell 提取 文件中内容,文件名是用序列号如下生成,文件差不多有将近400多w个  如下:  www.ahlinux.com 原始脚本#! /bin/sh#str1="" #filecount=`ls -l /root/gjj | wc -l | awk '{print $1}'`#echo $filecount for n in `seq  $1 $2`dofilename="/windows_gjj/"${n}&quo

shell 中seq的用法 echo -n用法

用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 增量 尾数 从1循环到100的两种方法(bash 其它的shell没试过)for x in `seq 1 100`;do echo $x;donefor x in {1..100};do echo $x;done echo -n 不换行输出 $echo -n "123" $echo "456" 最终输出 123456 echo -e 处理特殊字符 若字符串中

shell 中 seq的用法总结

用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 增量 尾数 以指定增量从首数开始打印数字到尾数. -f, --format=格式 使用printf 样式的浮点格式 -s, --separator=字符串使用指定字符串分隔数字(默认使用:\n) -w, --equal-width 在列前添加0 使得宽度相同 --help 显示此帮助信息并退出 --version 显示版本信息并退出 如果省略了首数或者增量,则默认其值为1,即使这样尾数仍

shell中seq运用

范例: 将/bugzilla/group.00....group.99下的超过3年的数据mv到/history/Bugzilla/group.00...group.99下 seq -w 00 99 (-w表示在前面补0,以使宽度相同) #!/bin/bash for inum in `seq -w 00 99` do SSDIR=/bugzilla/group.$inum DDDIR=/history/Bugzilla/group.$inum cd ${SSDIR} for Job in $(l

shell中${}的妙用

1. 截断功能 file=dir1/dir2/dir3/my.file.txt${file#*/}: 拿掉第一条/及其左边的字符串:dir2/dir3/my.file.txt ${file##*/}: 拿掉最后一条/及其左边的字符串:my.file.txt ${file#*.}: 拿掉第一个.及其左边的字符串:file.txt ${file##*.}: 拿掉最后一个.及其左边的字符串:txt ${file%/*}: 拿掉最后条/及其右边的字符串:/dir1/dir2/dir3 ${file%%/

转 shell中字分隔的妙用:变量IFS

IFS 的全称是 Interal Field Separator  ,即"内部区域分隔符",它也是一个内置环境变量,存储着默认的文本分隔符,默认下这分隔符是空格符(space  character),制表符(tab) 以及新行(newline) .先看下面一个简单示例: ? 1 2 3 4 5 6 7 8 #!/bin/sh msg="welcome to www groad net" for item in $msg do     echo "Item:

shell 中的常用技巧

本文收集了一堆的shell脚本技巧,主要方便自己查阅,技巧出自脚本之家中的博客,自己也增加了实现目的的其他方法,方便以后自己查阅: 0. shell 调试 代码如下: sh -x somefile.sh 在somefile.sh 文件里加上set+x set-x1. 用 && || 简化if else 代码如下: gzip -t a.tar.gz if [[ 0 == $? ]]; then     echo "good zip" else     echo "

[ SHELL编程 ] shell中各种括号的使用方法

转载自:http://www.jb51.net/article/60326.htm 在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下:1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+string},${var:=string},${var:?string} 5.$((exp)) 6.$(var%pattern),$(var%%pattern),$(var#pattern),$(var##pattern)现在分

Bourne Shell中的条件判断

条件判断是一个程序获得智能的基础,而Bourne Shell脚本则通过命令 [ 来模拟大多数编程语言中的条件表达式. shell中支持的控制结构有: (1) if then else fi (2) for in do done (3) while do done 第二种主要用于遍历,可能不需要条件判断,其它两种则免不了和 [ 命令共同使用了.下面讲解这个命令如何模拟条件表达式. 文件/目录判断[ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真.[ -c FILE ] 如果 FI