加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell 整理(25)=====替换大小写字母

发布时间:2020-12-15 16:16:14 所属栏目:安全 来源:网络整理
导读:这是我的新浪博客,有我写的所有shell 我在新浪博客里面写了很多自己平时练习用的shell,我以后准备在51上写,上面是超链接。 (一)接受一个输入,将输入的字符串的首字母替换掉。 例如 [root@localhost hushuai]# bash 1.sh input word:ding xue Ding Xue

这是我的新浪博客,有我写的所有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 /]#

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读