网站建设设计 昆山,南京广告公司电话,中企动力科技集团有限公司,河南网站建设多少钱目录
一、echo 命令
二、字符串相关操作
1.截取字符串
2.获取字符串长度
3.字符串追加字符
4.从开头或结尾删除字符串指定格式内容
三、随机数
1.使用 $RANDOM
2.指定RANDOM变量的范围
#xff08;1#xff09;从0开始的范围
#xff08;2#xff09;从指定数始…目录
一、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后的字符从头输出覆盖原有长度的内容\输出特殊字符本身如\ 输出\ 本身$ 输出 $本身
[rootlocalhost1 ~]#echo abcd echo abcd
abcd
abcd
[rootlocalhost1 ~]#echo -n abcd echo abcd
abcdabcd
[rootlocalhost1 ~]#echo -e abcd\befg
abcefg
[rootlocalhost1 ~]#echo -e abcd\cefg
abcd
[rootlocalhost1 ~]#echo -e abcd\nefg
abcd
efg
[rootlocalhost1 ~]#echo -e abcd\fefg
abcdefg
[rootlocalhost1 ~]#echo -e abcd\vefg
abcdefg
[rootlocalhost1 ~]#echo -e abcd\tefg
abcd efg
[rootlocalhost1 ~]#echo -e abcd\refg
efgd
[rootlocalhost1 ~]#echo -e \\ \$
\ $ 二、字符串相关操作
1.截取字符串 ${变量名索引长度} 注索引是指一个字符串中字符排序的编号索引编号以0开头第一个字符编号为0 //定义变量string
[rootlocalhost1 ~]#stringnicetomeetyou
//截取
[rootlocalhost1 ~]#echo ${string:6:4}
meet
[rootlocalhost1 ~]#echo ${string:0:4}
nice 2.获取字符串长度 ${#变量名} [rootlocalhost1 ~]#stringnicetomeetyou
[rootlocalhost1 ~]#echo ${#string}
13 3.字符串追加字符 变量字符串或变量 //将原有的变量值后追加指定的字符串或变量值
[rootlocalhost1 data]#vim string.sh
#!/bin/bash
string1abcdefg
string1hijk -- 追加字符串
echo $string1
string2nice to meet
yournamejack
string2$yourname -- 追加变量的值
echo $string2
[rootlocalhost1 data]#bash string.sh
abcdefghijk
nice to meet jack
4.从开头或结尾删除字符串指定格式内容 echo ${变量名%指定格式内容} echo ${变量名%%指定格式内容} echo ${变量名#指定格式内容} echo ${变量名##指定格式内容} %从末尾往前匹配最短符合指定格式的内容并删除%%从末尾往前匹配最长符合指定格式的内容并删除#从开头往后匹配最短符合指定格式的内容并删除##从开头往后匹配最长符合指定格式的内容并删除指定格式内容字符串中符合某个内容特征的格式如*是以开头后面有若干字符
最短符合可理解为只有一段满足指定格式的内容最长符合可理解为所有满足指定格式的内容。
//定义一个变量i
[rootlocalhost1 ~]#i11,22,33,44
[rootlocalhost1 ~]#echo $i
11,22,33,44
//对$i中从结尾开始最短满足,*格式的内容进行删除
[rootlocalhost1 ~]#echo ${i%,*}
11,22,33
//对$i中从结尾开始最长满足,*格式的内容进行删除
[rootlocalhost1 ~]#echo ${i%%,*}
11
//对$i中从开头开始最短满足*,格式的内容进行删除
[rootlocalhost1 ~]#echo ${i#*,}
22,33,44
//对$i中从开头开始最长满足*,格式的内容进行删除
[rootlocalhost1 ~]#echo ${i##*,}
44
//对$i中从结尾开始最短满足*,*,格式的内容进行删除
[rootlocalhost1 ~]#echo ${i#*,*,}
33,44
三、随机数
1.使用 $RANDOM $ RANDOM //RANDOM变量可以生成随机数默认范围 0 ~ 32767 [rootlocalhost1 ~]#echo $RANDOM
6584
[rootlocalhost1 ~]#echo $RANDOM
14161 2.指定RANDOM变量的范围
1从0开始的范围 $[ RANDOM % n ] //n代表指定数字使用取余操作可实现指定随机数范围 0 ~ n-1 //取 0~9 的随机数
[rootlocalhost1 ~]#echo $[RANDOM % 10]
0
[rootlocalhost1 ~]#echo $[RANDOM % 10]
4
[rootlocalhost1 ~]#echo $[RANDOM % 10]
6
[rootlocalhost1 ~]#echo $[RANDOM % 10]
8 2从指定数始的范围 $[ RANDOM % n x ] //x为指定数字n 后加上 x 代表的随机数范围是 x ~ n-1x //取 1~100 范围的随机数
[rootlocalhost1 ~]#echo $[RANDOM % 100 1]
38
[rootlocalhost1 ~]#echo $[RANDOM % 100 1]
49
[rootlocalhost1 ~]#echo $[RANDOM % 100 1]
76
[rootlocalhost1 ~]#echo $[RANDOM % 100 1]
12 四、从文件获取循环语句的取值
首先创建文件用于下面的脚本取值这里每个取值使用换行符分割实际上每个取值默认可以通过空格、制表符、换行符
//创建文件用于脚本取值
[rootlocalhost1 ifstest]#vim value.txt
zhangsan
lisi
wangwu
zhaoliu
qianqi
zhuba 1.for 循环从文件取值 for 变量名 in $(cat 文件位置) do 命令序列 done //for 循环从文件取值
[rootlocalhost1 ifstest]#vim CatchFileValue.sh
#!/bin/bash
for i in $(cat /ifstest/value.txt)
doecho $i
done
[rootlocalhost1 ifstest]#bash CatchFileValue.sh
zhangsan
lisi
wangwu
zhaoliu
qianqi
zhuba 2. while 循环从文件取值 while read 变量名 do 命令序列 done file [rootlocalhost1 ifstest]#vim CatchFileValue.sh
#!/bin/bash
while read i
doecho $i
done /ifstest/value.txt
[rootlocalhost1 ifstest]#bash CatchFileValue.sh
zhangsan
lisi
wangwu
zhaoliu
qianqi
zhuba cat 文件位置 | while read 变量名 do 命令序列 done [rootlocalhost1 ifstest]#vim CatchFileValue.sh
#!/bin/bash
cat /ifstest/value.txt | while read i
doecho $i
done[rootlocalhost1 ifstest]#bash CatchFileValue.sh
zhangsan
lisi
wangwu
zhaoliu
qianqi
zhuba 五、IFS变量指定字段分隔符
1.查看IFS变量指定的字段分隔符 [rootlocalhost ~]# set | grep IFS //使用此命令可以查看IFS指定的字段分隔符 -- IFS变量指定的字段分隔符默认为 空格、\ttab制表符、\nenter换行符 [rootlocalhost1 ~]#set | grep IFS
IFS$ \t\n local i IFSlocal i IFS local i IFS local i IFSlocal i IFSlocal c i0 IFSlocal IFSlocal IFSlocal option option2 i IFSIFSlocal IFSlocal IFSlocal IFSlocal IFSlocal IFSlocal IFSlocal i IFSlocal IFSlocal i c IFSlocal OIFS$IFS IFSIFS$OIFS;local IFSlocal IFSlocal IFSlocal IFS 2.永久修改字段分隔符
//直接修改IFS变量的值可以实现永久修改字段分隔符
[rootlocalhost1 ~]#IFS$/n
[rootlocalhost1 ~]#set | grep IFS
IFS/n -- 这里显示已经被修改成/n换行符local i IFSlocal i IFS local i IFS local i IFS
...
3.临时修改字段分隔符
//指定文件用于循环语句取值
[rootlocalhost2 ~]#vim value.txt
zhang san
li si
wang wu
zhao liu
qian qi
zhu ba
//默认情况的$IFS会指定空格、制表符、换行符为字段分割符
[rootlocalhost2 ~]#vim CatchFileValue.sh
#!/bin/bash
for i in cat /root/value.txt
doecho $i
done
//文件中的值输出效果如下
[rootlocalhost2 ~]#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的影响 [rootlocalhost2 ~]#vim CatchFileValue.sh
#!/bin/bash
IFSb$IFS
IFS$\n -- 将字段分割符改为\n换行符
for i in cat /root/value.txt
doecho $i
done
echo ------------
IFS$IFSb -- 将原本的$IFS变量值恢复
for j in cat /root/value.txt
doecho $j
done
[rootlocalhost2 ~]#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