shell 脚本 3.29

dd:
             dd if=/dev/zero of=文件名 bs=1k count=1
   文件真正的大小是 bs * count

输出
     printf:不会自动换行,需+\n
     print :会自动换行
printf:
         %c:显示ASCII码
          %d:显示十进制证书
          %e:科学计数法
          %f:浮点数
          %s:显示字符串
          %u:显示无符号整数
          %%:显示%自身
       #[.#]:第一个数字控制显示的宽度,第二个#表示小数点后面的精度(%3.1f),
                 默认右对齐,-号为左对齐,+为显示字符的符号

根据扩展名切分文件:
   1、从右往左
             非贪婪模式:${var%.*} 从右到左删除第一个 . 连着右侧的字符串
             贪婪模式:${var%%.*} 从右到左删除最后一个 . 连着右侧字符串
               例:var="hack.fun.book,txt"
                       ${var%.*}  -->hack.fun.book
                       ${var%%.*} -->hack
   2、从左到右
              非贪婪模式:${var#*.} 从左到右删除第一个 . 连着左边的字符串
              贪婪模式:${var##*.} 从左到右删除最后一个 . 连着右边的字符串
                 例:var="hack.fun.book,txt"
                          ${var#*.} --> fun.book.txt
                          ${var##*.} -->txt

内置函数:
 1、   rand():0到1之间的随机数
        length():字符串的长度
 2、split (string, array)  -->如果第三个参数没有提供,awk就默认使用当前FS值 
 3、substr 截取字符串
          substr(s,p):返回字符串s中从p开始的后缀部分
          substr(s,p,n):返回字符串s中从p开始长度为n的后缀部分

split:
     -b:指定分割后的每个文件的大小
     -d:使用数字作为后缀
     -a length:指定后缀的长度
     -l num:按照行进行分隔
     PREFIX(前缀名):指定分割后的文件的前缀,写在所有选项最后

使用vim编辑器某文件,并让光标处于这个文件的最后一行 :vim + file

输出现在的时间:date +"%Y%m%d"

1、传递3个参数给脚本,参数均为用户名。将此些用户的帐号信息提取出来后放置于/tmp/testusers.txt文件中, 并要求每一行行首有行号:

 #!/bin/bash
  2 read -p "please input three username:" username1 username2 username3
  3 var=(${username1} ${username2} ${username3})
  4 for i in ${var[*]}
  5 do
  6     if id -u ${i} &> /dev/null
  7     then
  8         l=`wc -l /tmp/testusers.txt | cut -d " " -f 1`
  9         l=$[$l+1]
 10         echo $l,`grep "^${i}" /etc/passwd ` >> /tmp/testusers.txt           
 11    else
 12         echo "${i} not exist!"
 13     fi
 14 done

猜你喜欢

转载自blog.csdn.net/caojm0/article/details/79748492