网站建设 应酷,一件代发货源网,摄影网站设计实现步骤,淄博三合一网站开发前言 当你面试的时候#xff0c;可能要说的架构什么都准备好了#xff0c;也说的七七八八#xff0c;结果到最后问了一些基础的问题答不上来或者没想起来就很容易造成社会性死亡#xff0c;一个没答上来道心被破#xff0c;后面就更容易懵逼了 通常造成这个问题的原因是写…前言 当你面试的时候可能要说的架构什么都准备好了也说的七七八八结果到最后问了一些基础的问题答不上来或者没想起来就很容易造成社会性死亡一个没答上来道心被破后面就更容易懵逼了 通常造成这个问题的原因是写脚本的频率和方法也许对于一个常年工作的人写脚本的频率是几月写一次相似的场景复用旧脚本修改时间长了不注意有的基础就忘了但是面试的时候面试者可能近期有写脚本或者随手一搜shell基础或者随口一提 所以预计分几篇对这些可能问但有的不常用的shell基础问题进行汇总这篇文章主要总结了$的相关含义以及具体的应用场景 $# $* $ $0 $1 $2等都代表了什么 大致的功能基本是用于向脚本内传递参数就是说写一个传递参数的脚本用于执行脚本内的某项功能,这种传参数类的脚本通常是多功能性的常和函数或者case搭配使用。一般来说配置的越复杂使用的传参类型越多的脚本适应的环境或功能越复杂常见于第三方公司或者某些公司为客户提供以便于用户使用、开源项目或者外挂式脚本(通过网页请求和参数后即可完成某项任务例如某些病毒以此原理访问即会下载并传播) 而备份还原部署定时任务等只需要完成某一项任务的脚本中通常很少见到$# $ $*
示例 /bin/sh test.sh hook $# 代表传给脚本的参数的个数
sh test.sh hook#!/bin/bash
echo $#返回值为
1代表你执行脚本的时候输入了一个参数$#可用于判断执行该脚本时是否输入了参数如果输入了参数执行脚本中该参数代表功能如果没输入参数执行默认的设置或不执行$ 列出传给脚本的所有的参数
sh test.sh 1 2 3 4 5 6#!/bin/bash
echo $
echo $
echo
for i in $
doecho $i
done返回值为
1 2 3 4 5 6
1 2 3 4 5 6 1
2
3
4
5
6$会把你执行脚本后面输入的参数都列出来有文档说加双引号后可能输出的结果不同但经过Centos7.9和ubuntu18.04的测试列出的数量限制和格式都没区别
$传递参数时是把每一个参数都分开传了一次$* 列出传给脚本的所有的参数
sh test.sh 1 2 3 4 5 6#!/bin/bash
echo $*
echo $*
echo
for i in $*
doecho $i
done返回值为
1 2 3 4 5 6
1 2 3 4 5 6 1 2 3 4 5 6$*也会把你执行脚本后面输入的参数都列出来有文档说加双引号后可能输出的结果不同但经过Centos7.9和ubuntu18.04的测试列出的数量限制和格式也都没区别
$*传递参数时是把所有参数当作了一个字符串$0 输出该脚本本身的名字
sh test.sh #!/bin/bash
echo $0返回值为
test.sh这个相较于前3个常用常见于提示性内容的输出中。
当你没输入参数或者输入没有的参数时进行提示。usage: sh $0 check|start|stop|restart$1 $2… $n代表传递给该shell脚本的第几个参数
sh test.sh running 1 #!/bin/bash
echo $1
echo $2返回值为
running
1这个最常见和显而易见的会根据第几个参数执行对应的命令。
通常用于输入多个参数后当判断第一个参数是某个任务后之后的参数配合前一个参数的任务进行补充性的执行常见于部署或启动关闭服务等脚本。示例sh online.sh stop 3 假设这是一个主要是上线相关功能的脚本意思是执行关闭任务关闭第3个节点 $$ 显示脚本运行的当前进程ID号
sh test.sh running 1 #!/bin/bash
echo $$返回值为
2913这个是返回执行这个脚本时的pid实际应用只能说大多数人用的都很浅用于提示性内容的输出例如 脚本执行完成返回个成功提示告诉你服务启动完成当前pid是XXX谁有获得pid后后续又用其完成某项功能的 可以评论区投稿$? 对上一条命令的执行结果进行反馈0表示执行成功其余数字表示执行不成功
sh test.sh #!/bin/bash
ls fuck1241d.txt
echo $?返回值为
2
因为实际没有这个文件返回值不为0这个是最常用的$参数常见大多数shell脚本在shell脚本的实际应用为在执行某个命令后判断是否成功或者失败然后再根据成功或失败的反馈执行不同情况的相应的命令。示例yum安装某个软件如果安装失败后会通过wget或url等别的方式去再安装。其他
$- 显示 Shell 使用的当前选项 虽然有这个的解释但是简直无法想象生产里实际用到这个或者问这个问题的是什么人谁实际生产有使用到这个可以评论区贴地址大家去观摩一下