题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