LinuxShell常见的⾯试题(简单基础语法)
1. 什么是shell脚本?
⼀个Shell脚本是⼀个⽂本⽂件(就像是.py, .java⽂件⼀样),包含⼀个或多个命令。作为系统管理员,我们经常需要使⽤多个命令来完成⼀项任务,我们可以添加这些所有命令在⼀个⽂本⽂件(Shell脚本)来完成这些⽇常⼯作任务。(就像我们每次⽤git的时候把code推上去 都要搞⼀⼤堆命令⼀个接⼀个的输⼊)
2. 什么是默认登录shell?如何改变指定⽤户的登录shell?
在Linux操作系统,**“/bin/bash”是默认登录shell,**是在创建⽤户时分配的。使⽤chsh命令可以改变默认的shell。⽰例如下所⽰:
# chsh <⽤户名> -s <;新shell>
# chsh linuxtechi -s /bin/sh
3. 可以在shell脚本中使⽤哪些类型的变量?
因为shell脚本就跟python脚本⼀样,所以我们可以⽤系统定义变量(关键字)以及⽤户⾃定义变量。
系统变量是由系统系统⾃⼰创建的。这些变量通常由⼤写字母组成,可以通过“set”命令查看。
⽤户变量由系统⽤户来⽣成和定义,变量的值可以通过命令“echo $<;变量名>”查看。
4. 如何将标准输出和错误输出同时重定向到同⼀位置?
这⾥有两个⽅法来实现:
⽅法⼀:
2>&1 (如# ls /usr/share/doc > 2>&1 )
⽅法⼆:
&> (如# ls /usr/share/doc &> )
5. shell脚本中如何写if 判断?
if[条件]
then
命令1
命令2
git常用指令…..
else
if[条件]
then
命令1
命令2
….
else
命令1
命令2
…..
fi
fi
”是什么意思?在写⼀个shell脚本时,如果你想要检查前⼀命令是否执⾏成功,在if条件中使⽤“
6. “?”可以来检查
前⼀命令的结束状态(0表⽰成功 ⾮0表⽰不成功)。简单的例⼦如下:
成功:
root@localhost:~# ls /usr/bin/shar
/usr/bin/shar
root@localhost:~# echo $?
不成功:
root@localhost:~# ls /usr/bin/share
ls: cannot access /usr/bin/share: No such file or directory
root@localhost:~# echo $?
2
7. shell基础语法:如何⽐较两个数字?
在if-then中使⽤测试命令( -gt 等)来⽐较两个数字
#!/bin/bash
x=10
y=20
if[$x-gt$y]
then
echo “x is greater than y”
else
echo “y is greater than x”
fi
8. shell基础语法:break是⼲啥的?
break命令⼀个简单的⽤途是退出执⾏中的循环。我们可以在while和until循环中使⽤break命令跳出循环。
9. shell基础语法:continue是⼲啥的?
continue命令不同于break命令,它只跳出当前循环的迭代,⽽不是整个循环。continue命令很多时候是很有⽤的,例如错误发⽣,但我们依然希望继续执⾏⼤循环的时候。
10. shell基础语法:case是⼲啥的?
case 变量 in
值1)
命令1
命令2
…..
最后命令
!!
值2)
命令1
命令2
……
最后命令
;;
esac
11. shell基础语法:while是怎么⽤?
while[条件]
do
命令…
done
12. 如何执⾏脚本?
chmod a+x myscript.sh
13. “#!/bin/bash”是⼲啥的?
#!/bin/bash是shell脚本的第⼀⾏,称为释伴(shebang)⾏。这⾥#符号叫做hash,⽽! 叫做 bang。它的意思是命令通过/bin/bash 来执⾏。
14. shell基础语法:for是怎么⽤?
for变量 in 循环列表
do
命令1
命令2
….
最后命令
done
15. 如何调试shell脚本?
使⽤’-x’参数(sh -x myscript.sh)可以调试shell脚本。另⼀个种⽅法是使⽤‘-nv’参数( sh -nv myscript.sh)。
16. 如何在脚本中⽐较字符串?
test命令可以⽤来⽐较字符串。测试命令会通过⽐较字符串中的每⼀个字符来⽐较。
17. Bourne shell(bash) 中有哪些特殊的变量 ?
内建变量解释
$0命令⾏中的脚本名字
$1第⼀个命令⾏参数
$2第⼆个命令⾏参数
…..    …….
$9第九个命令⾏参数
$#    命令⾏参数的数量
$*所有命令⾏参数,以空格隔开
18. 在shell脚本中,如何测试⽂件 ?
test命令可以⽤来测试⽂件。
Test        ⽤法
-d ⽂件名如果⽂件存在并且是⽬录,返回true
-e ⽂件名如果⽂件存在,返回true
-f ⽂件名如果⽂件存在并且是普通⽂件,返回true
-r ⽂件名如果⽂件存在并可读,返回true
-s ⽂件名如果⽂件存在并且不为空,返回true
-w ⽂件名如果⽂件存在并可写,返回true
-x ⽂件名如果⽂件存在并可执⾏,返回true
19. 注释的语法
20. 如何让 shell 就脚本得到来⾃终端的输⼊?
read命令可以读取来⾃终端(使⽤键盘)的数据。read命令得到⽤户的输⼊并置于你给出的变量中。
# vi /tmp/test.sh
#!/bin/bash
echo ‘Please enter your name’
read name
echo “My Name is $name”
# ./test.sh
Please enter your name
LinuxTechi
My Name is LinuxTechi
21. 如何取消变量或取消变量赋值 ?
unset <;变量名>
22. 算数运算的语法
有两种⽅法来执⾏算术运算:
1.使⽤expr命令
# expr 5 + 2
2.⽤⼀个美元符号和⽅括号($[ 表达式 ])例如:test=$[16 + 4]; test=$[16 + 4]
23. 如何⽤do while?
do
{
命令
}while(条件)
24. 基础语法:定义函数
$ diskusage (){ df -h ;}
译注:下⾯是我给的shell函数语法,原⽂没有[function]函数名[()]
{
命令;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。