前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >两分钟学会Shell常用的知识点

两分钟学会Shell常用的知识点

作者头像
公众号: 云原生生态圈
发布2021-11-15 17:44:05
4270
发布2021-11-15 17:44:05
举报
文章被收录于专栏:云原生生态圈

Shell常用的知识点

获取被软连接的真实值—readlink

  • readlink 能帮助我们在Linux环境获取命令所在的实际目录下
代码语言:javascript
复制
#dirname "$(dirname "$(readlink -f "$(which javac || which java)")")"
root@devops:~# ls /usr/local/
bin/          games/        jdk/          lib/          openresty/    share/
etc/          include/      jdk1.8.0_171/ man/          sbin/         src/
root@devops:~# ls /usr/local/
bin  etc  games  include  jdk  jdk1.8.0_171  lib  man  openresty  sbin  share  src
root@devops:~# which javac
/usr/local/jdk/bin/javac
root@devops:~# readlink -f $(which javac)
/usr/local/jdk1.8.0_171/bin/javac

定制化脚本的运行SHELL环境—set

set是BASH内置的命令,如果不提供选项给set,默认情况下会打印所有的变量和函数的名称和值。

常用的选项:

  • -u或者-o nounset : 执行脚本时遇到的不存在的变量时报错,默认情况下BASH会自动忽略
  • set -x或者-o xtrace : 用来在运行结果之前,先输出执行的那一行命令。一般在调试脚本时候很有用
  • -e : 根据返回值判断命令是否运行成功。只要脚本发生错误,就终止执行。但是对于管道命令来说就不是很好用了。因为管道命令是把最后一个命令的返回值当做整理命令的返回值
  • +e : 关闭-e选项,为了针对特殊的场景,比如有些返回值为非零的时候才执行脚本时候可以使用。
  • set -o pipefail: 只要有一个子命令失败,整个管道命令就失败了。

一般建议将以上四个删除放在BASH的头部使用

代码语言:javascript
复制
#!/bin/bash

set -eux
set -p pipefail${YOUR_COMMAND}

Shell中的变量

变量

含义

$0

当前脚本的文件名

$n

传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是,第二个参数是2。

$#

传递给脚本或函数的参数个数。

$*

传递给脚本或函数的所有参数。

$@

传递给脚本或函数的所有参数。被双引号(“ “)包含时,与 $* 稍有不同

$?

上个命令的退出状态,或函数的返回值。

$$

当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生生态圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Shell常用的知识点
  • 获取被软连接的真实值—readlink
  • 定制化脚本的运行SHELL环境—set
  • Shell中的变量
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档