shell入门笔记2:字符串数组echo与printf
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell入门笔记2:字符串数组echo与printf相关的知识,希望对你有一定的参考价值。
说明:
本文是关于http://c.biancheng.net/cpp/shell/的相关笔记
shell字符串
字符串可以用单引号,也可以用双引号,也可以不用引号。
1 #!/bin/bash
2
3 ##字符串
4
5 #不加引号:
6 #无法出现;
7 echo a
8 echo a;b
9
10 #单引号:
11 #单引号里的任何字符都会原样输出,单引号字符串中的变量替换是无效的;
12 #单引号字符串中不能出现单引号(对单引号使用转义符后也不行)。
13 str=‘this is a string‘
14 echo ${str}
15 str_1=‘$str‘
16 echo ${str_1}
17 #str_2=‘\\‘a‘
18 #echo str_2
19
20 #双引号:
21 #双引号里可以有变量替换;
22 #双引号里可以出现转义字符。
23 your_name=‘wuyifan‘
24 str="Hello, I know that you are \\"$your_name\\"!"
25 echo ${str}
26
27 #拼接字符串
28 greeting="hello,"$your_name"!"
29 greeting_1="hello,${your_name}!"
30 echo $greeting"/"$greeting_1
31
32 #获取字符串长度
33 string="abcd"
34 echo ${#string}
35
36 #提取子字符串
37 string="alibaba is a great company"
38 echo ${string:1:4}
39
40 #查找子字符串:
41 #索引
42 #expr index $string $substring
43 #在字符串$string中所匹配到的$substring的第1个字符第一次所出现的位置。
44 echo `expr index "$string" is`
45 echo `expr index "$string" at`
shell数组
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
类似于C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。
1 #!/bin/bash
2
3 ##定义数组
4
5 #()中以空格或者换行符分隔
6 names=("ljq" "ymq" "lc")
7 names_1=(
8 "ljq"
9 "ymq"
10 "lc"
11 )
12 #还可以单独定义数组的各个分量
13 names_2[0]="ljq"
14 names_2[1]="ymq"
15 names_2[2]="lc"
16 #可以不使用连续的下标,而且下标的范围没有限制
17
18 ##读取数组
19 echo "first name: ${names[0]}"
20 echo "second name: ${names[1]}"
21 echo "third name: ${names[2]}"
22 #使用@或*可以获取数组中的所有元素
23 echo ${names_1[*]}
24 echo ${names_2[@]}
25
26 ##获取数组的长度:与获取字符串的长度相同
27 #获取数组元素的个数
28 echo ${#names[*]}
29 echo ${#names[@]}
30 #获取数组单个元素的长度
31 echo ${#names[2]}
echo命令与printf命令
echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串。
printf命令用于格式化输出, 是echo命令的增强版。它是C语言printf()库函数的一个有限的变形,并且在语法上有些不同。
注:
printf 不像 echo 那样会自动换行,必须显式添加换行符(\\n)。
printf 命令的语法:
printf format-string [arguments...]
format-string 为格式控制字符串,arguments 为参数列表。
这里仅说明与C语言printf()函数的不同:
printf命令不用加括号。
format-string可以没有引号,但最好加上,单引号双引号均可。
参数多于格式控制符(%)时,format-string可以重用,可以将所有参数都转换。
arguments使用空格分隔,不用逗号。
1 #!/bin/bash
2
3 #format-string为双引号
4 printf "%d %s\\n" 1 "abc"
5
6 #单引号与双引号效果一样
7 printf ‘%d %s\\n‘ 1 "abc"
8
9 #没有引号也可以输出
10 printf %s abcdef
11 echo
12
13 #格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string被重用
14 printf %s abc def
15 echo
16 printf "%s\\n" abc def
17 printf "%s %s %s\\n" a b c d e f g h i j
18
19 #如果没有arguments,那么%s用NULL代替,%d用0代替
20 printf "%s and %d \\n"
21
22 #如果以%d的格式来显示字符串,那么会有警告,提示无效的数字,此时默认置为0
23 printf "The first program always prints‘%s,%d\\n‘" Hello Shell
以上是关于shell入门笔记2:字符串数组echo与printf的主要内容,如果未能解决你的问题,请参考以下文章