首页 > 代码库 > (linux shell)第一章--小试牛刀(下)
(linux shell)第一章--小试牛刀(下)
文章来源: (linux shell)第一章--小试牛刀(下)
1.6 数组和关联数组
1.6.1 预备知识
Bash同时支持普通数组和关联数组,普通数组只能使用整数作为数组索引,而关联数组可以使用字符串作为数组索引。关联数组在很多操作中相当有用。
1.6.2 实战演练
定义数组的方法有很多,可以在单行中使用一列值来定义一个数组:
array_var=(1,2,3,4,5,6) #这些值将会存储在以0为起始索引的连续位置上
另外,还可以将数组定义成一组索引-值:
array_var[0]="test1"
array_var[1]="test2"
打印出特定数组元素的内容:
echo ${array_var[0]}
以清单形式打印出数组中的所有值:
echo ${array_var[*]}
打印数组长度
echo ${#array_var[*]}
1.7 使用别名
1.7.1 预备知识
别名有多种便捷方式,可以使用函数,也可以使用alias命令
1.7.2 实战演练
alias new_command=‘command sequence‘
alias install=‘sudo apt-get install‘
当然,这样修改的别名只是暂时的,只对当前终端有效,如果想一直保持作用,可将它放入~/.bashrc中
1.8 获取终端信息
1.8.1 预备只是
tput和stty是两款终端处理工具。
1.8.2 实战演练
获取终端的行数和列数
tput cols
tpu lines
打印出当前终端名称:
tput longname
将光标移动到方位(100,100)处
tput cup 100 100
设置终端背景色
tput setb no(0--7)
设置文本样式为粗体:
tput bold
删除当前光标到行尾的所有内容:
tput ed
使用stty -echo 可以隐藏用户输入的内容
1.9 获取设置日期和延时
1.9.1 实战演练
读取日期:
date
打印纪元时
date +%s
选项--date用于提供日期串作为输入。但我们可以使用任意的日期格式化选项来打印输出。将日期串作为输入能够过用来获知给定的日期是星期几
date --date ‘Jan 20 2011‘ +%A
可以按照你的选择打印出日期格式:
date "+%d %B %Y"
时间的延时可以用sleep sec命令
1.10 函数和参数
1.10.1 实战演练
定义函数:
function fname() {
statements;
}
或者fname(){statments}
只需要使用某个函数名就可以调用函数:
fname
调用函数传递参数:
fname arg1 arg2
以下是函数读取参数的语法:
fname() {
echo $1,$2 #访问参数1和参数2
echo "$@" #以列表的方式一次打印所有的参数,即"$1" "$2" "$3"
echo "$*" #类似于$@,但是参数被作为单个实体,即"$1c$2c$3",c是IFS的一个字符
}
1.11 比较与测试
?1.11.1 预备知识
? ?我们可以用if,if else以及逻辑运算符来执行测试,而用一些比较运算符来比较数据项。另外一个test命令也可以用来测试。
?1.11.2 实战演练
? ?if condition; then
? ? ?commands;
? ?fi
? ?算数比较
? ?条件通常被放置在中括号内,一定要注意在[或]与操作数之间有一个空格。如果忘记了这个空格,脚本就会报错。例如:
? ?[ $var -eq 0 ] or [ $var -eq 1 ]
? ?其它一些重要的操作符有:
? ? ?-gt: 大于
? ? ?-lt: 小于
? ? ?-ge: 大于或等于
? ? ?-le: 小于或等于
? ?可以按照下面的方法结合多个条件进行测试
? ?[ $var -ne 0 -a $var2 -gt 2 ] #逻辑与 -a
? ?[ $var -ne 0 -o $var2 -lt 2 ] #逻辑或 -o
? ?
? ?文件系统相关测试:
? ?[ -f $file_var ] #如果给定的变量包含正常的文件路径和文件名,则返回真
? ?[ -x $var ] #如果给定的变量包含的文件可执行,则返回真
? ?[ -d $var ] #如果给定的变量包含的是目录, 则返回真
? ?[ -e $var ] #如果给定的变量包含的文件存在,则返回真
? ?[ -w $var ] #如果给定的变量包含的内容可写,则返回真
? ?[ -d $var ] #如果给定的变量包含的内容可读,则返回真
? ?[ -l $var ] #如果给定的变量包含的是一个符号链接,则返回真
? ?
? ?字符串比较:
? ? ?可以检查两个字符串是否相等以及不相等:
? ? ?[[ $str1 = $str2 ]] [[ $str1 != $str2 ]]
? ? ?比较两个字符串之间的大小:
? ? ?[[ $str1 > $str2 ]] 或者 [[ $str1 < $str2 ]]
? ? ?[[ -z $str1 ]] 如果str1是空字符串,则返回真
? ? ?[[ -n $str1 ]] 如果str1是非空字符串,则返回真?