考试题1:用source执行脚本和用bash执行Shell脚本的区别是什么?
调用source或者. 是在当前shell环境加载脚本,因此保留变量
每次调用bash都会开启一个子shell,因此不保留当前的shell变量
考试题2:如何自定义环境变量?
- 变量名要求:字母、数字、下划线组成、可以是字母或是下划线开头
- 变量名严格区分大小写
- 等号左右不能有空格
考试题3:定义变量内容,不加引号、单引号、双引号、反引号结果有什么不同?应该怎么用?
- 单引号,所见即所得,强引用
- 双引号,输出引号里所有内容,识别特殊符号,弱引用
- 无引号,连续的符号可以不加引号,有空格则有歧义,最好使用双引号
- 反引号,引用命令执行结果,等于$()用法
考试题4:请分别说出2个以上用于整数运算特殊符号或命令,以及适合小数运算的命令。
((1+1)) [1+1] echo "3.2 2.4"|awk '{print ($1+$2)}'
考试题5:写出特殊变量对应的意义及应用 $0、$n、$#、$*、$@、$?、$$、$!、$_
$0 获取shell脚本文件名,以及脚本路径$n 获取shell脚本的第n个参数,n在1~9之间,如$1 ,$2, $9 ,大于9则需要写,${10},参数空格隔开$# 获取执行的shell脚本后面的参数总个数$* 获取shell脚本所有参数,不加引号等同于$@作用,加上引号"$*"作用是 接收所有参数为单个字符串,"$1 $2.."$@ 不加引号,效果同上,加引号,是接收所有参数为独立字符串,如"$1" "$2" "$3" ...,空格保留$? 上一次命令执行状态返回值,0正确,非0失败$$ 当前shell脚本的进程号$! 上一次后台进程的PID$_ 再次之前执行的命令,最后一个参数
考试题6:写出下面特殊变量扩展的意义
${oldboy}、${#oldboy}、${oldboy:offset:length}、${oldboy#word}、${oldboy##word}、${oldboy%word}、${oldboy%%word}、${oldboy/pattern/string}、${oldboy//pattern/string}、${oldboy:-word}
${oldboy} 返回oldboy变量值
${#oldboy} 返回变量长度,字符长度
${oldboy:offset:length} 返回从offset开始,长度为length的字符
${oldboy#word} 从变量开头删除最短匹配的word子串
${oldboy##word} 从变量开头,删除最长匹配的word
${oldboy%word} 从变量结尾删除最短的word
${oldboy%%word} 从变量结尾开始删除最长匹配的word
${oldboy/pattern/string} 用string代替第一个匹配的pattern
${oldboy//pattern/string} 用string代替所有的pattern
${oldboy:-word} 如果oldboy变量值为空或未赋值,就会返回word字符串替代变量的值,如果变量未定义,则返回备用的值。防止变量为空或未定义导致异常
考试题7:在条件测试与表达式中,[]和[[]]有何区别?
考试题8:说出适合在[]以及test中整数比较的特殊运算符号?
考试题9、输出下面菜单 1.install MySQL 2.install Tomcat 3.exit 当用户选择对应的数字就开始安装对应的服务(可echo输出替代),需要对用户输入的数字进行判断是否为整数(用条件测试表达式实现)。
考试题10、使用read读入方式比较两个整数大小(用条件表达式实现)。
