shell 整理(25)=====替换大小写字母
这是我的新浪博客,有我写的所有shell 我在新浪博客里面写了很多自己平时练习用的shell,我以后准备在51上写,上面是超链接。 (一)接受一个输入,将输入的字符串的首字母替换掉。 例如 [root@localhost hushuai]# bash 1.sh input word:ding xue Ding Xue [root@localhost hushuai]# shell 代码如下: #!/bin/bash >file1 #每执行一次脚本清空次这个文件 read -p "input word:" ll #read -p 用来接受一个输入 echo $ll |xargs -n1>file #将用户的输入排成一列,xargs 的作用 cat file |while read line #read 的用法每次都读取一行,然后将这一行赋值给line do b=`echo $line |cut -c1`#上面有多少行就循环多少次,在每行都取第一个字母 d=`echo $line |cut -c2-` #读取每行都截取第2个以后的字母,也就是说每读取 c=`echo $b |tr 'a-z' 'A-Z'` 一行,循环一次,我们就把这一行拆成俩部分 echo -n "$c$d " >>file1 #细节在$c$d后面有一个空格,不然每一行的输出会 done紧凑在一起。 cat file1 echo#在循环中使用-n ,末尾一定要写个echo 否则就会连在一起 shell 的版本2 #!/bin/bash >bb [ -z $1 ] && echo "Usage:`basename $0` word" && exit # `basename $0` 打印出脚本的名字 a=$##$#统计传参的个数,以空格为分隔符 echo $@ |xargs -n1 >aa#$@ 表示传进来的所有参数 for i in `seq $a` do c=`cat aa | sed -n ''$i'p'|cut -c1` #传进来几个就循环几次,中间和 d=`cat aa | sed -n ''$i'p'|cut -c2-`上面的原理一样 e=`echo $c |tr 'a-z' 'A-Z'` echo -n "$e$d " >>bb done cat bb echo 这两个的核心是一样的,同样我们也可以用sed 来完成 例如: [root@localhost /]# echo ding xue | sed -r 's/([^ ]+)/u&/g' Ding Xue [root@localhost /]# 我对里面知识的一些总结: 比如说:xargs 就两个作用,把一行换成一列,一列换成一行 [root@localhost /]# seq 3 |xargs 1 2 3 [root@localhost /]# seq 3 |xargs -n2 1 2 3 [root@localhost /]# seq 3 |xargs -n2 |xargs 1 2 3 如果是一个接受用户输入的我们一般用read 命令 一般有两种写法: (1)read -p "Input:" a echo $a (2)echo -n "Input:" #细节,我写-n 是有道理的,不然输出就是第一种 read Input情况。不美观。 echo $Input (3) #!/bin/bash echo -n "Input:" read echo $REPLY#是一个内置函数,读取用户输入的内容。 输出结果: [root@localhost /]# bash 18.sh Input: a a [root@localhost /]# bash 18.sh Input:a a ~ read 还有常用的 read -s 不回显 read -t 等待用户最长输入时间 脚本中可能会遇到的几个常用传参 例如: #!/bin/bash a=$# echo $a $# 统计传进来参数的个数 b=$@$@ 传进来的字符串 echo $b ~ 看效果: [root@localhost /]# bash 16.sh ding xue 2 ding xue [root@localhost /]# echo $b | xargs -n1 如果添加这么一条,结果将变为: [root@localhost /]# bash 16.sh ding xue 2 ding xue ding xue [root@localhost /]# 如果我们把上条换成这样: c=`echo $b | xargs -n1` echo $c 输出将变为: [root@localhost /]# bash 16.sh ding xue 2 ding xue ding xue #这个地方就变成横向排列,因为加上反引号shell就会认为竖着 [root@localhost /]#东西横过来。例如: [root@localhost /]# echo `seq 9` 1 2 3 4 5 6 7 8 9 [root@localhost /]# 当我们受read 输入时经常用的是: #!/bin/bash read -p "Input:" a b=${#a}#统计字符串的个数(包括空格) echo $b 看结果 [root@localhost /]# bash 15.sh Input:ding xue 8#统计了8个说明什么,把空格也算上了 [root@localhost /]# (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- angularjs – 如何在ngDialog中设置对话框宽度
- angular – ngrx – 对效果的奇怪行为
- 一篇博客分清shell中的状态返回值-return-break-continue-e
- angular – ionic2 – 在sidemenu中添加log
- angularjs – 仅当离子网络连接可用时才发送HTTP请求
- 如何从我的Shell / Python脚本访问GMail(IMAP电子邮件)下载
- Angular 学习总结
- DevExpress v17.2新版亮点—Bootstrap篇(一)
- java – Docker(LXC)容器中的JVM内存分配
- 如何在Docker Hub中从源代码构建Emacs? BSS和堆之间的差距