shell面试题目总结
1.如何理解shell脚本中第一行#!/bin/sh
#!为特殊的表示符,其后是解释此脚本的shell的路径。此脚本使用/bin/sh进行解释执行。
2.如何向脚本传递参数。
脚本名字 参数1 参数2 ... 例:test.sh wenf girl
test.sh中脚本如下:
#!/bin/sh echo $1 " is a " $2 exit 0
执行的结果是:wenf is a girl
总结点:
A:传入脚本的参数分别用$1,$2,...表示传入的第一个,第二个...参数。
$0------脚本的名字。
$#------传递给脚本的总的参数个数
$?------上一句执行代码或者整个shell退出时的情况,正常则为0,异常则是非0
$$------本程序的进程ID号(PID)
$!------上一个命令的PID
$*------传递给程序的所有参数组成的字符串
$@------以“参数1”“参数2”...的形式保存所有的参数
3.命令行直接新建一个文件的方法
总结的方法有:
A:touch 文件名
B: vi 文件名
C nano -w 文件名
另外,比较常用的两个文本编辑器为vim ,emacs
4.如何获取文件的前n行,后n行
获取文件的前n行,head -n 文件名;获取文件的后n行,tail -n 文件名
5如何调试bash脚本
在脚本#!/bin/sh 插入参数-xv ,例:#!/bin/sh -xv
6.如何连接字符串,如何进行整数的相加计算
连接字符串:str3=$str1$str2 ;整数相加:let num3=$num1+$num2
7.如何检查文件系统中是否存在某个文件
#!/bin/sh if [ -f ./testwenf.sh ] then echo "File exists" fi exit 0
检查文件系统中是否存在某个目录时:-d 目录名
8.shell脚本中循环语法
for循环:
#!/bin/sh for i in $(ls) do echo item:$i done exit 0
while循环:
#!/bin/sh counter=0 while [ $counter -lt 5 ] do echo The counter is $counter let counter=counter+1 done
until循环
#!/bin/sh counter=10 until [ $counter -lt 5 ] do echo The counter is $counter let counter=counter-1 done
9.单引号与双引号有什么区别
单引号---当我们不希望把变量转换为值的时候使用它。
双引号---会计算所有变量的值并用值代替。
10.如何只用echo命令获取字符串变量的一部分
echo ${variable:x:y}
x-起始位置
y-长度
variable="My name is Petras, and I am developer." echo ${variable:11:6} # 会显示 Petras
11.如何在脚本文件中重定向标准输出和标准错误流到log.txt文件中
在脚本中添加 “命令