一、数组
(1)
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。
在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。定义数组的一般形式为:
array_name=(value1 ... valuen)
比如 arr=(1 2 3 4 5)
或者
arr=(
1
2
3
)//括号必须这样 不然会出错
或者
arr[0]=1
arr[2]=3
可以不使用连续的下标,而且下标的范围没有限制。
echo "arr[0] is ${arr[0]}" 输出数组元素
或者使用@或*输出数组全部元素
比如 echo "arr is ${arr[@]}"
获取数组长度和获取字符串长度是一样的方法
echo "the len of arr is ${#arr[@或者*]}"
(2)在bash里 echo "hello\n" 会输出hello\n
如果想输出换行效果 则需要echo -e "hello\n"
这里 -e 表示对转义字符进行替换
(3)echo `date` 会输出当前时间
二、
printf
shell的printf和C语言的不一样在于
printf 不像 echo 那样会自动换行,必须显式添加换行符(\n)。
printf 命令的语法:
printf format-string [arguments...]format-string 为格式控制字符串,arguments 为参数列表。
printf()在C语言入门教程中已经讲到,功能和用法与 printf 命令类似
这里仅说明与C语言printf()函数的不同:
- printf 命令不用加括号
- format-string 可以没有引号,但最好加上,单引号双引号均可。
- 参数多于格式控制符(%)时,format-string 可以重用,可以将所有参数都转换。
- arguments 使用空格分隔,不用逗号。
x=1
var="hello"
printf "%s %d\n" $var $x
输出 hello 1