1、eval在shell中有什么作用?请举个例子说明?
作用:
#!/bin/bash
aa=h1
bb=h2
var=(aa bb)
for vas in ${var[@]}
do
echo $vas
eval var_temp=\$${vas}
echo $var_temp
done
2、dirname有什么作用?请举个例子说明?
作用:获取当前脚本路径
例子:
#!/bin/bash
cd `dirname $0`
pwd;ls
3、ssh -o stricthostkeychecking=no -o ConnectTimeout=60 分别代表什么意思?
ssh加接时不需要输入key检查,然后六十秒为超时时间
4、说一下-n -z -d -f -e -r -w -x -l !-z在shell中分别代表什么意思?-n和-z试举一个例子说明
-n 非空为真
-z 字符串为空为真
-d 是目录且存在为真
-f 是普通文件且存在为真
-e 存在为真
-r 可读为真
-w 可写为真
-x 可执行为真
-l 是链接为真
!-z不为空
1)-n例子:
JavaApp=($(ps aux | grep "java" | grep "/app/guaji"))
if [ -n "${JavaApp[0]}" ];then
echo -e "\033[1;31m 脚本退出 \033[0m"
exit 1
fi
2)-z例子:
ssh=$(ssh -o StrictHostKeyChecking=no $2 "ls /")
if [[ -z "$ssh" ]];then
echo -e "\033[1;31m \033[5m 远程主机($2)无法连接,脚本退出. \033[0m"
exit 1
fi
5、正则表达式的 "|"、"\n"、"\r"、"\t"分别代表什么意思
|表示或的意思
\n表示换行,将当前位移置下行开头
\r回车,将当前位置移至本行开头
6、写出获取公网IP的两种方法
ifconfig | grep -Po "(?<=addr:).*(?=Bcast)" | egrep -v ‘^192.168|^172.1[6-9].|^172.2[0-9].|^172.3[0-1].|^10.|^127.‘
/sbin/ifconfig | awk -F‘[ :]+‘ ‘/inet addr:/ {print $4}‘ | egrep -v ‘^192.168|^172.1[6-9].|^172.2[0-9].|^172.3[0-1].|^10.|^127.‘
7、$$表示什么意思?
获取当前执行脚本的进程名
8、函数内的local是什么意思?举一脚本例子说明
脚本中局部变量,存在于脚本函数(function)中的变量称为局部变量,要以local方式进行声明,使之只在本函数作用域内有效,
防止变量在函中的命名与变量外部程序中变量重名造成程序异常,下面是一脚本例子:
#!/bin/sh
a() {
local s=1
echo $s
}
b() {
s=2
echo $s
}
s=0
a
echo $s
b
echo $s
9、[email protected]和$*的区别
[email protected]将命令行每个参数视为单独的字符串,等同于"$1"、"$2"、"$3"
$*将所有的命令行所有参数视为单个字符串,等同于"$1$2$3"
10、$0、dirname和basename有什么作用?
dirname获取脚本路径名
basename获取脚本名
$0获取脚本路径和脚本名
11、取出3306端口号这个数字
netstat -tlnp| grep 3306 | awk ‘[ :]+‘ ‘{print $5}‘ #[ :]+ 以空格和点为分隔符,这种分隔符有一个或多个
12、shell中单引号和双引号与不加与号分别代表什么意思
单引号:可以说是所见即所得,即将单号引号的内容原样输出
双引号:把双引号的内容输出出来,如果内容中有命令、变量等,会先把变量、命令解析出结果,然后再输出最终内容来
无引号:把内容输出出来,会将含有空格的字符串视为一个整体输出,如果内容中有命令、变量等,会先把变量、命令解析出结果,
然后再输出内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字
路径等可以不加任何引号,不过最好用双引号替代之
13、echo -n 是什么意思?举一脚本例子显示他的功能
-n不换行
#!/bin/bash
. /etc/init.d/functions
echo "---------Please wait while we are checking-------------"
echo -n "6秒后执行该操作."
for ((i=0;i<6;i++))
do
echo -n ".";sleep 2
#[ $i -eq 3 ] && break
done
echo
action "test success" /bin/true
14、echo -e "\n" | nohup ping www.baidu.com > filename 2>&1 &这里的-e 和 "\n" 是什么意思?
-e是代表后面输入的内容包含特珠字符需要加的参数
\n 是代表换行
15、有1-9的数字,echo输出1-9的数字时,屏蔽0-5的数字再输出
echo ‘1234567890‘ | sed ‘s/[0-5]//g‘
16、用nohup把一个脚本放在后台运行
nohup sh test.sh > filename 2>&1 &
17、用seq打印10以空格分隔,用seq坚着打印10到1
seq -s " " 10
seq 10 -1 1
18、curl -I -s www.baidu.com | head -1 | wc -l 中的-I和-s代表什么意思
-s 沉默或安静模式。不显示进度表或错误消息。使卷曲静音
-I 只读取HTTP头! HTTP的服务器功能命令HEAD此用来获取
--connetct-timeout 2 2秒连接超时
19、wget -T 10 -c -q --spider www.baidu.com 这些参数分别代表什么意思?
-T 超时10少
-c 断点续传
-q 为执行命令时屏蔽他打印输出的意思,执行命令不会任何内容出来
--spider wget命令加spider参数不会下载任何东西,spider的主要作用是测试下载链接。
tries
20、生产环境常用的监控web的方法是哪种
用wget或curl的方法作监控
21、生产环境写脚本报错就发邮件的命令是怎么样的
mail -s "uname -n ‘s httpd status is on" [email protected] < $logfile
22、给文件改名
mv $file 1linux-`echo $file | cut -d "-" -f2` #详情看老男孩shell第三天文档,只动变量,静态不动
ls *.jpg | awk -F ‘_finished‘ ‘{print "mv " " $0" "$1".jpg"}‘ | bash
23、查看当前目录的所有文件夹
ls -F | grep /
24、查看192.168.1.0/24网段的主机有没有在线
25、awk中的NF代表什么意思?
NF代表结尾的意思