Linux-2018-spring-6-5
新内容: 一、解释型语言和编译型语言 解释型语言特点: 1.解释器(interpreter)按语句逐条执行 2.语法/运行时的错误只有执行到的时候才会报 3.优化的余地不大
编译型语言特点 1.编译器一次性读入源代码,编译(compile)每一个.c文件-->.o文件(二进制文件、机器代码),链接(link)*.o --> .exe 2.语法错误立刻报 3.优化可以很充分
二、shell脚本
一般来说,解释型语言写的程序叫做脚本。(脚本特点:小)
shell中数据类型有两种:Integer和String (默认都是String,在没有歧义的情况下不用加引号) ex. v="I love teaching"
赋值语句:x=3(等号左右不能有空格)y=5 $:取值符 用法${}(当不歧义时不用加{}) echo $x 字符串拼接:k=$x$y 数值运算:k=$(($x+$y))
思考: m="$x+$y=$(($x+$y))" m='$x+$y=$(($x+$y))'
关于shell中的变量: 1.默认都是字符串 2.declare -i 整数类型 3.如果做整数运算,会把非整数都理解为0 4.declare +i 把变量的整数属性去掉 5.unset删除一个变量 6.echo $notexistvar 等价于 echo $emptystrvar(空字符串) 7.declare -r var (read-only)等价于 const int i = 1; 8.环境变量:指可以继承给儿子进程的变量 export x 或 declare -x x
注:shell中的继承只能通过环境变量
9.数组变量 a=(A B C 1 2 30) echo ${a[0]} 数组长度:echo ${#a[@]} 增加元素:a[100]=40 总结 a.下标可以不连续 b.下标不合法输出空字符串 c.{#a[@]表示数组长度 10.特殊变量 $变量:当前shell的进程编号 ?变量:返回上个命令的状态编号(上个命令执行成功返回0,未成功返回大于0) 11.把命令结果保存到变量中 a.$(cmd) 例:a=$(ls) b.`cmd` 例:a=`date +%y-%m-%d`
test命令
a.判断文件类型、存在、时间比较、权限
b.比较字符串或证书
test -e /bin/ls:-e是否存在
与条件语句合用: if test -e /bin/ls; then echo "exist: /bin/ls"; fi if [ -e /bin/ls ]; then echo "exist: /bin/ls"; fi
shell中的循环
while循环
for循环
上节课思考题: for f in `find . -name '*output*txt'` do newf=`echo $f | sed 's/.output//'`; mv $f $newf; done
思考: 创建100个文件夹命名000-099,每一个文件夹内创建一个txt文件,命名为1.txt-99.txt,每个文件写入一个随机整数(rand命令),将所有的随机数排序(降序),输出格式(printf命令): 9734 : 7.txt 9324 :33.txt
安装:sudo apt-get install rand