shell脚本编写辅助命令

您所在的位置:网站首页 echo输出到文件会换行吗 shell脚本编写辅助命令

shell脚本编写辅助命令

2023-06-25 16:02| 来源: 网络整理| 查看: 265

目录

一、echo 命令

二、字符串相关操作

1.截取字符串

2.获取字符串长度

3.字符串追加字符

4.从开头或结尾删除字符串指定格式内容

三、随机数

1.使用 $RANDOM

2.指定RANDOM变量的范围

(1)从0开始的范围

(2)从指定数始的范围

四、从文件获取循环语句的取值

1.for 循环从文件取值

2. while 循环从文件取值

五、IFS变量指定字段分隔符

1.查看IFS变量指定的字段分隔符

2.永久修改字段分隔符

3.临时修改字段分隔符

一、echo 命令

echo [选项] ... 将指定内容(字符、变量、命令等)标准输出到屏幕

-n 不换行输出(默认是换行输出)

-e 输出转义字符,将转义后的内容输出

-e 支持输出内容常用转义字符

转义字符作用\b转义后相当于退格键(删除前一个字符,可使用多次)\c不换行输出,在“\c”后面不存在字符的情况下,相当于echo -n 在“\c”后面存在字符的情况下,后面的字符不会被输出\n换行,被输出的字符从“\n”处开始另起一行输出\f换行,“\f”后换行输出的字符,开头从上一行结尾开始\v与“\f”相同\t转义后相当于插入tab制表符\r光标移至行首(不换行)将\r后的字符从头输出,覆盖原有长度的内容\输出特殊字符本身,如\ 输出\ 本身,$ 输出 $本身 [root@localhost1 ~]#echo "abcd" && echo "abcd" abcd abcd [root@localhost1 ~]#echo -n "abcd" && echo "abcd" abcdabcd ​ [root@localhost1 ~]#echo -e "abcd\befg" abcefg ​ [root@localhost1 ~]#echo -e "abcd\cefg" abcd ​ [root@localhost1 ~]#echo -e "abcd\nefg" abcd efg ​ [root@localhost1 ~]#echo -e "abcd\fefg" abcd    efg ​ [root@localhost1 ~]#echo -e "abcd\vefg" abcd    efg ​ [root@localhost1 ~]#echo -e "abcd\tefg" abcd    efg ​ [root@localhost1 ~]#echo -e "abcd\refg" efgd ​ [root@localhost1 ~]#echo -e "\\ \$" \ $

二、字符串相关操作 1.截取字符串

${变量名:索引:长度}

注:索引是指一个字符串中,字符排序的编号,索引编号以0开头(第一个字符编号为0)

//定义变量string [root@localhost1 ~]#string=nicetomeetyou ​ //截取 [root@localhost1 ~]#echo ${string:6:4} meet [root@localhost1 ~]#echo ${string:0:4} nice

2.获取字符串长度

${#变量名}

[root@localhost1 ~]#string=nicetomeetyou ​ [root@localhost1 ~]#echo ${#string} 13

3.字符串追加字符

变量+=字符串或变量 //将原有的变量值后追加指定的字符串或变量值

​ [root@localhost1 data]#vim string.sh #!/bin/bash ​ string1=abcdefg string1+=hijk    -- 追加字符串 echo $string1 ​ string2="nice to meet " yourname=jack string2+=$yourname  -- 追加变量的值 echo $string2   ​ [root@localhost1 data]#bash string.sh abcdefghijk nice to meet jack ​ 4.从开头或结尾删除字符串指定格式内容

echo ${变量名%指定格式内容}

echo ${变量名%%指定格式内容}

echo ${变量名#指定格式内容}

echo ${变量名##指定格式内容}

%从末尾往前匹配最短符合指定格式的内容并删除%%从末尾往前匹配最长符合指定格式的内容并删除#从开头往后匹配最短符合指定格式的内容并删除##从开头往后匹配最长符合指定格式的内容并删除指定格式内容字符串中符合某个内容特征的格式(如:*是以:开头后面有若干字符)

最短符合可理解为只有一段满足指定格式的内容;最长符合可理解为所有满足指定格式的内容。

​ //定义一个变量i [root@localhost1 ~]#i="11,22,33,44" [root@localhost1 ~]#echo $i 11,22,33,44 ​ //对$i中从结尾开始最短满足,*格式的内容进行删除 [root@localhost1 ~]#echo ${i%,*} 11,22,33 ​ //对$i中从结尾开始最长满足,*格式的内容进行删除 [root@localhost1 ~]#echo ${i%%,*} 11 ​ //对$i中从开头开始最短满足*,格式的内容进行删除 [root@localhost1 ~]#echo ${i#*,} 22,33,44 ​ //对$i中从开头开始最长满足*,格式的内容进行删除 [root@localhost1 ~]#echo ${i##*,} 44 ​ //对$i中从结尾开始最短满足*,*,格式的内容进行删除 [root@localhost1 ~]#echo ${i#*,*,} 33,44 ​ 三、随机数 1.使用 $RANDOM

$ RANDOM //RANDOM变量可以生成随机数(默认范围 0 ~ 32767)

[root@localhost1 ~]#echo $RANDOM 6584 [root@localhost1 ~]#echo $RANDOM 14161

2.指定RANDOM变量的范围 (1)从0开始的范围

$[ RANDOM % n ] //n代表指定数字,使用取余操作可实现指定随机数范围( 0 ~ n-1)

//取 0~9 的随机数 [root@localhost1 ~]#echo $[RANDOM % 10] 0 [root@localhost1 ~]#echo $[RANDOM % 10] 4 [root@localhost1 ~]#echo $[RANDOM % 10] 6 [root@localhost1 ~]#echo $[RANDOM % 10] 8

(2)从指定数始的范围

$[ RANDOM % n + x ] //x为指定数字,n 后加上 x ,代表的随机数范围是( x ~ n-1+x)

//取 1~100 范围的随机数 [root@localhost1 ~]#echo $[RANDOM % 100 + 1] 38 [root@localhost1 ~]#echo $[RANDOM % 100 + 1] 49 [root@localhost1 ~]#echo $[RANDOM % 100 + 1] 76 [root@localhost1 ~]#echo $[RANDOM % 100 + 1] 12

四、从文件获取循环语句的取值

首先创建文件用于下面的脚本取值,这里每个取值使用换行符分割,实际上每个取值默认可以通过空格、制表符、换行符

//创建文件用于脚本取值 [root@localhost1 ifstest]#vim value.txt zhangsan lisi wangwu zhaoliu qianqi zhuba

1.for 循环从文件取值

for 变量名 in $(cat 文件位置)

do

命令序列

done

//for 循环从文件取值 [root@localhost1 ifstest]#vim CatchFileValue.sh #!/bin/bash for i in $(cat /ifstest/value.txt) do  echo $i done ​ [root@localhost1 ifstest]#bash CatchFileValue.sh zhangsan lisi wangwu zhaoliu qianqi zhuba

2. while 循环从文件取值

while read 变量名

do

命令序列

done < file

[root@localhost1 ifstest]#vim CatchFileValue.sh #!/bin/bash while read i do  echo $i done < /ifstest/value.txt ​ [root@localhost1 ifstest]#bash CatchFileValue.sh zhangsan lisi wangwu zhaoliu qianqi zhuba

cat 文件位置 | while read 变量名

do

命令序列

done

[root@localhost1 ifstest]#vim CatchFileValue.sh #!/bin/bash cat /ifstest/value.txt | while read i do echo $i done [root@localhost1 ifstest]#bash CatchFileValue.sh zhangsan lisi wangwu zhaoliu qianqi zhuba

五、IFS变量指定字段分隔符 1.查看IFS变量指定的字段分隔符

[root@localhost ~]# set | grep IFS //使用此命令可以查看IFS指定的字段分隔符

-- IFS变量指定的字段分隔符默认为 (空格)、\t(tab制表符)、\n(enter换行符)

[root@localhost1 ~]#set | grep IFS IFS=$' \t\n'           local i IFS='   local i IFS=" "'   local i IFS=" "'   local i IFS='   local i IFS='           local c i=0 IFS='   local IFS='   local IFS='   local option option2 i IFS='    IFS='       local IFS='       local IFS='       local IFS='       local IFS='   local IFS='       local IFS='   local i IFS='   local IFS='           local i c='' IFS='       local OIFS=$IFS IFS='        IFS=$OIFS;               local IFS='                   local IFS='                   local IFS='   local IFS='

2.永久修改字段分隔符 ​ //直接修改IFS变量的值,可以实现永久修改字段分隔符 [root@localhost1 ~]#IFS=$'/n' [root@localhost1 ~]#set | grep IFS IFS=/n  -- 这里显示已经被修改成/n(换行符)   local i IFS='   local i IFS=" "'   local i IFS=" "'   local i IFS=' ... ​ 3.临时修改字段分隔符 //指定文件用于循环语句取值 [root@localhost2 ~]#vim value.txt zhang san li si wang wu zhao liu qian qi zhu ba ​ //默认情况的$IFS会指定空格、制表符、换行符为字段分割符 [root@localhost2 ~]#vim CatchFileValue.sh #!/bin/bash for i in `cat /root/value.txt` do  echo $i done ​ //文件中的值输出效果如下 [root@localhost2 ~]#bash CatchFileValue.sh zhang san li si wang wu zhao liu qian qi zhu ba zhang san li si wang wu zhao liu qian qi zhu ba

在一个脚本中,如果某段命令行程序需要使用特定的字段分隔符,可使用如下操作

IFSb=$IFS -- 自定义一个变量,将$IFS的变量值赋给此变量

IFS='\n' -- 修改$IFS指定的字段分隔符

命令序列 -- 修改后的命令序列将会使用修改后的$IFS指定的字段分隔符

IFS=$IFSb -- 将自定义的变量再赋值给$IFS,即恢复原本的$IFS

命令序列 -- 之后的命令将不会受到之前修改的$IFS的影响

[root@localhost2 ~]#vim CatchFileValue.sh #!/bin/bash IFSb=$IFS IFS=$'\n'    -- 将字段分割符改为\n(换行符) for i in `cat /root/value.txt` do  echo $i done echo "------------" IFS=$IFSb    -- 将原本的$IFS变量值恢复 for j in `cat /root/value.txt` do  echo $j done ​ ​ [root@localhost2 ~]#bash CatchFileValue.sh zhang san    -- 实现只取换行符分割的字段 li si wang wu zhao liu qian qi zhu ba ------------ zhang    --恢复后不受之前修改的影响,与原本输出效果相同 san li si wang wu zhao liu qian qi zhu ba



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3