题1:用source执行脚本和用bash执行Shell脚本的区别是什么?
使用source和.来执行脚本,相当于在一个shell下面执行脚本。互相可以可以调用。
bash或sh执行脚本,开启了一个新的shell,或者说是开启了一个子shell。
当有嵌套调用脚本的时候,能把子shell脚本里面的变量传递过来,作为全局变量。
题2:如何自定义环境变量?
a. export OLDBOY=1
b.OLDGIRL=2
export OLDGIRL
c.declare
declare -x A=1
永久生效处理办法:
[root@web01 scripts]# tail -1 /etc/profile export OLDBOY=1 [root@web01 scripts]# . /etc/profile [root@web01 scripts]# echo $OLDBOY 1
题3:定义变量内容,不加引号、单引号、双引号、反引号结果有什么不同?应该怎么用?
a=test #不加引号,也会解析变量,推荐连续数字用此方法。
a='test' #所见即所得。
a="test" #默认双引号,解析变量。
a=`date` #解析一个命令结果。就用``或$()。
题4:请分别说出2个以上用于整数运算特殊符号或命令,以及适合小数运算的命令。
整数:
(()) 推荐
let 推荐
$[]
expr
declare
小数:
bc
awk
题5:写出特殊变量对应的意义及应用
$0 脚本名字(路径),比如启动脚本里传参
$n、 第n个参数
$#、 参数的总个数
$*、 表示全部的参数,参数作为一个整体
$@、 表示全部的参数,但是参数是分开的个体
$?、 执行任务后的返回值,0表示没有问题
$$、 表示进程的pid,获取pid值,可以kill进程
$!、 表示上一个进程的Pid号
$_ 表示前一个脚本的最后一个参数
题6:写出下面特殊变量扩展的意义
${oldboy} oldboy变量
${#oldboy} 变量的字符个数
${oldboy:offset:length} 从offset的位置截取,截取长度为lenth的值
${oldboy#word} 从变量内容的开头 删除含word的第一个字符
${oldboy##word} 从变量内容的开头 删除含word的全部字符
${oldboy%word} 从变量内容的尾部 删除含word的第一个字符
${oldboy%%word} 从变量内容的尾部 删除含word的全部字符
${oldboy/pattern/string} 对变量内容把第一个pattern替换为符合string
${oldboy//pattern/string}对变量内容把全部pattern替换为符合string
${oldboy:-word} 如果oldboy内容不存在,则使用word来替换
题7:在条件测试与表达式中,[]和[[]]有何区别?
逻辑测试表达式中:
[]中 使用 -a -o
[[]]或(())里面 使用&& ||
此处还需总结了解下
题8:说出适合在[]以及test中整数比较的特殊运算符号?
-ne not equal !=
-eq equal =
-lt less then <
-gt greater then >
-le less equal <=
-ge greater equal >=
题9、输出下面菜单
1.install MySQL
2.install Tomcat
3.exit
当用户选择对应的数字就开始安装对应的服务(可echo输出替代),需要对用户输入的数字进行判断是否为整数(用条件测试表达式实现)。
#!/bin/sh cat <<EOF 1.install MySQL 2.install Tomcat 3.exit EOF read -t 15 -p "请选择一个序号(必须是数字):" num #判断输入的值是否为整数 expr 2 + $num &>/dev/null if [ $? -ne 0 ] then echo "Usage:$0 {1|2|3}" exit 1 fi #执行选择的功能序号 if [ $num -eq 1 ] then echo "install MySQL ……" elif [ $num -eq 2 ] then echo "install Tomcat ……" elif [ $num -eq 3 ] then echo "bye." exit else echo "Usage:$0 {1|2|3}" exit 1 fi
考试题10、使用read读入方式比较两个整数大小(用条件表达式实现)。
#!/bin/bash read -t 30 -p "请输入两个整数:" a b #1.判断是否为整数 expr $a + $b + 2 &>/dev/null if [ $? -ne 0 ] then echo "请输入两个整数。" exit fi #2.表示第二个参数不能为空 [ -z "$b" ] && { echo “请输入两个整数。” exit } if [ $a -gt $b ] then echo "$a > $b" elif [ $a -eq $b ] then echo "$a = $b" else echo "$a < $b" fi