实验环境:Ubantu 16.04
一、变量键盘读取(read)
read xxx #从键盘获取输入,存到xxx变量中
read #从键盘获取输入,存到REPLY变量中
echo -n “请输入您的名字:” #”-n”是打印完不换行的意思
read name
echo “欢迎你,$name”
前两句代码等同于:
read -p “请输入您的名字:” name #获取输入时先打印提示信息
二、数组(array)
1、定义一个数组
array1=(aa bb cc dd)
2、打印其中一个元素
echo ${array1[0]} #打印结果:aa
3、打印所有元素
echo ${array1[*]} #打印结果:aa bb cc dd
或:echo ${array1[@]}
4、打印所有下标
echo ${!array1[*]} #打印结果:0 1 2 3
或:echo ${!array1[@]}
5、打印数组的元素个数
echo ${#array1[*]} #打印结果:4
或 echo ${#array[@]}
三、声明(declare)
1、声明变量为只读
注:变量为只读时无法修改值、删除(unset)
2、单引号内忽略特殊意义(也就是说’’内是什么就打印出什么)
3、反引号
等同于echo “xxxxxxx $(hostname) xxxxxxxxx” #hostname是一个变量
四、与文件系统及程序的限制关系(ulimit)
1、查看所有限制
ulimit -a
2、限制单个文件大小
ulimit -f 20480 #只对当前bash有效,退出后即恢复为unlimited
dd if=/dev/zero of=file bs=1M count=30 #会提示“文件大小超出限制,因为上一句限制了最大为20M”
五、变量内容的删除、替换
1.变量删除:
path=$PATH
r=${path#*sbin:} #”#”表示从头部开始删,直到第一个”sbin:”,
r=${path##*sbin:} #”##”表示从头部开始删,直到最后一个”sbin:”
r=${path%bin*} #”%”表示从尾部开始删,直到遇到第一个”bin”
r=${path%%bin*} #”%%”表示从尾部开始删,直到最后一个”bin”
2.变量替换
r=${xx-”aaa”}
如果xx存在且值不为空:xx赋给r;
如果xx存在且值为空:xx赋给r;
如果xx不存在:”aaa”赋给r;
r=${xx:-”aaa”}
如果xx存在且值不为空:xx赋给r;
如果xx存在且值为空:”aaa”赋给r;
如果xx不存在:”aaa”赋给r;
r=${xx:=”aaa”}
如果xx存在且值不为空:xx赋给r;
如果xx存在且值为空:”aaa”赋给r、xx;
如果xx不存在:”aaa”赋给r、xx;
r=${xx:?”aaa”}
如果xx存在且值不为空:”aaa”赋给r;
如果xx存在且值为空:打印”aaa”;
如果xx不存在:打印”aaa”;
r=${xx:+”aaa”}
如果xx存在且值不为空:xx赋给r;
如果xx存在且值为空:;
如果xx不存在:”aaa”不会赋给r;
六、命令别名设置
alias #显示目前已有的别名
alias aa=”ifconfig eth0” #设置别名
unalias #取消别名
七、历史命令
history #查看历史命令(默认保存1000个,通过环境变量$HISTFILESIZE修改)
!120 #快速调用序号为120的历史命令
history -c #清除所有历史命令