shell脚本相关问题

1.什么是shell?

shell是用户和内核之间的接口;

2.典型linux系统上常用的shell有哪些不同类型?

bash,sh等;

3.软链接和硬链接有什么区别?

软链接相当于快捷方式,是文件名的链接,删除原始文件会使软链接处于断开状态;

硬链接相当于复制,删除原始文件,不影响硬链接;

4.如何在linux中传递和访问脚本的参数?

脚本(a.sh)中写入$1,$2,执行脚本时,加参数(./a.sh "arg1" "arg2")

5.$#的意义是什么?

$#显示传递给脚本的参数计数;

6.我想监视一个不断更新的日志文件,可以用什么命令最有效地实现这个目的;

tail -f 文件名;默认显示最后10行,连续显示文件的更新部分;

7.我想连接远程服务器并执行一些命令,我该如何实现?

我们可以使用ssh来做到这一点;ssh username@serverIP -p sshport;若是sshport为22,也可以省略-p,如,ssh root$183.13.27.97;

8.linux中的3个标准流是什么?

0-标准输入;1-标准输出;2-标准错误;

9.for循环的语法

10.在linux中编写if条件的语法;

  

11.shell脚本是什么,它是必须的吗?

一个shell脚本是一个文本文件,包含一个或多个命令。有时经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令到shell脚本来完成这些日常工作任务;

12.可以在shell脚本中使用哪些类型的变量?

系统定义变量(set查看)、用户定义变量(变量值可以通过echo $变量名 查看);

13.执行脚本;

 bash a.sh; cat a.sh |bash; ./a.sh;

14.变量使用

 name=`cat a.sh`

echo $name(无格式);echo "$name"(与linux查看的效果一致,有格式)

 shell赋值时,不需要考虑值类型,如,字符串、整数、小数;默认赋值为字符串;

局部变量,name=xixi当前进程下使用(父进程或子进程不能使用);pstree -p;(查看进程树)

全局变量(环境变量),export name 或 export name=hehe(赋值并声明为全局变量)或 declare -x name=hehe ;(可以一直往下传n级进程);(env查看全局变量)

unset name;删除变量name;

set显示所有变量,标准变量、全局变量;

 

 ()开启子shell(pid与当前shell,pid一致),一次性,不影响当前shell;执行完就结束了;

{}影响当前环境;

(ls;pwd),{ ls;pwd;}无差异,但赋值就不同了,如(name=hua;echo $name)

 远程上传文件:scp 文件名 用户名@ip:路径

shift 位移

 

 $?判断上一条命令是否成功;执行脚本后,$?,判断脚本中最后执行的一条命令是否正确(如,第一条脚本语法错误,脚本位置中最后一条不执行);

 

 

 

 

 bash -x a.sh分布执行;

猜你喜欢

转载自www.cnblogs.com/canglongdao/p/12683164.html