1.数组有关:
(1)定义数组,打印数组
这些值将会存储在以0为起始索引的连续位置上。
#!/bin/bash
array_var=(1 2 3 4 5 6)
array_y[0]="test1"
array_y[1]="test2"
array_y[2]="test3"
array_y[3]="test4"
index=3
echo $index
echo ${array_y[$index]}
echo ${array_y[3]}
echo ${array_y[*]}
echo ${array_var[3]}
echo ${array_var[@]}
echo ${#array_var[@]}
array_va=(1 2 3 4 5 6 8 9 10)
echo ${#array_va[*]}
结果如下:
打印$index的原因是我把index起始定义到了4,然后位置4是没有值的,所以一直无法打印出来echo ${array_y[$index]},要注意一下这一点。
(2)定义关联数组
#!/bin/bash
declare -A fruit_array
aaa=(1 2 3 4 5)
echo ${aaa[*]}
fruit_array=([banana]='120 dollars' [xigua]='80 dollars')
fruit_array[apple]='100 dollars'
fruit_array[orange]='150 dollars'
echo ${fruit_array[*]}
fruit_array[banana]='180 dollars'
#打印数组内容
echo ${fruit_array[*]}
#打印数组的索引
echo ${!fruit_array[*]}
结果如下:
fruit_array=([banana]='120 dollars' [xigua]='80 dollars')在前,fruit_array[apple]='100 dollars'在后,数组会是三个值。
fruit_array[apple]='100 dollars'在前,fruit_array=([banana]='120 dollars' [xigua]='80 dollars')在后,数组里面只有banana和xigua,没有apple。
2.使用别名
(1)创建一个别名
$alias ls='echo lslslslsl'
则再输入ls命令,就不再是原来的作用了,会输出lslslslsl
加上一个\对别名进行转义,则可以起到原来的作用。
alias命令只是暂时的。关闭终端后,所设置过的别名就失效了。要一直起作用就放到~/.bashrc文件中。
可以这样操作:
echo 'alias ls="echo lalalalla"' >>~/.bashrc
如果发现还未生效使用:
source ~/.bashrc
(2)删除别名可以使用unalias命令或者alias aaa=,会取消名为aaa的别名。
使用unalias命令:
对于一些还是有原有作用的别名,不建议使用alias aaa=
(因为类似于ls,是有原本的作用的,使用alias ls=后,连原本作用都失去了)
3.获取终端信息
(1)stty
选项 -echo禁止将输出发送到终端,而选项echo则允许发送输出。
在输入密码时,不显示输入内容demo:
#!/bin/sh
echo -e "Enter password:"
stty -echo
read password
stty echo
#echo $password
echo Password read.
(2)tput命令和在脚本中生成延时:
echo -n Count:
#存储光标位置
tput sc
count=0;
while true;
do
if [ $count -lt 40 ];
then
let count++;
sleep 1;
#恢复光标位置
tput rc
#清除
tput ed
echo -n $count;
else exit 0;
fi
done
*获取终端的行数和列数:
tput cols
tput lines
*打印出当前终端名称:
tput longname
*将光标坐标移动到坐标(100,100)处:
tput cup 100 100
*设置终端背景色和文本前景色
#n可以在0-7之间取值
#(0-黑色;1-蓝色;2-绿色;3-青色;4-红色;5-洋红色;6-黄色;7-白色)
tput setab n
tput setaf n
*设置文本样式为粗体
tput bold
*设置下划线的起止
tput smul
tput rmul
4.获取设置日期和延时:
(1)读取日期:
$ date
2018年 11月 08日 星期四 14:40:10 CST
(2)读取纪元时:(纪元时被定义为从世界标准时间1970年1月1日0时0分0秒起至当前时刻的总秒数)
$ date +%s
154165927
(3)获取某个日期串的纪元时:
date --date "2018年 11月 08日 星期四 14:40:10 CST" +%s
1541679480
(4)获取给定的日期格式:
date --date "2018年 11月 08日" +%A
星期四
(5)按照指定格式打印日期:
date "+%d %B %Y %A"
08 十一月 2018 星期四
(6)检查一组命令所花费的时间:
秒级别和毫秒级别的方式:
#!/bin/bahs
start=$(date +%S)
echo $(date +%S)
echo $start;
echo "准备倒数5秒:"
for i in $(seq 5 -1 1)
do
#sleep在脚本中生成延时
echo -en "$i";sleep 1
done
echo -e "开始"
end=$(date +%S)
difference=$((end - start))
echo Time taken to execute commands is $difference seconds.
start1=$(date +%s%N)
echo $start1
start_ms=${start1:0:16}
for i in $(seq 2 -1 1)
do
echo -en "$i";sleep 1
done
end1=$(date +%s%N)
end_ms=${end1:0:16}
echo "cost time is:"
echo "scale=6;($end_ms- $start_ms)/1000000" | bc
(7)日期格式表:
星期 | %a(例如:Sat) %A(例如:Saturday) |
月 | %b(例如:Nov) %B(例如:November) |
日 | %d(例如:31) |
固定格式日期(mm/dd/yy) | %D(例如:10/18/10) |
年 | %y(例如:10) %Y(例如:2010) |
小时 | %I或%H(例如:08) |
分钟 | %M(例如:33) |
秒 | %S(例如:10) |
纳秒 | %N(例如:695208515) |
Unix纪元时 | %s(例如:1290049486) |