Linux 脚本(一) 基础准备

Linux脚本编写技巧
本文介绍了在编写Linux脚本过程中常见的问题及解决方法,包括定位脚本位置、读取参数、带参数的脚本以及脚本间的调用方式。

随着使用Linux系统越来越久,难免需要写一些脚本来帮助我们快速编写脚本。本文主要介绍在写脚本的过程中主要遇到的一些问题:

  • 定位脚本位置(绝对位置&相对位置)
  • 读取参数(配置文件读取&文件内读取)
  • 带参数的脚本(基本类型& -<参数名> <参数值> & –<参数名> <参数值>)
  • 脚本内调用其他脚本(普通执行&exec&fork)

1. 定位脚本位置

在运行的时候,可以通过如下命令来快速定位脚本的位置:

# 案例1
 cd `dirname $0`
 echo `pwd`

# 案例2 加载路径目录下的其他配置文件
SCRIPT_PATH=$(cd `dirname $0`; pwd)
. ${SCRIPT_PATH}/../env/env.properties

# 案例3 加载同意路径下的其他脚本
. `dirname $0`/env.sh

2. 读取参数

脚本主要是参数与命令的集合体。通常参数的使用主要包括3种:脚本内直接声明,配置文件读取,启动时通过参数传递。

  • 直接声明
# 例子1 JAVA_HOME(脚本内设置)
JAVA_HOME=/home/abel/hello
echo $JAVA_HOME
$JAVA_HOME/bin/java -version
  • 配置文件读取
# 例子2 JAVA_HOME(读取配置文件)
#env.properties 文件
JAVA_HOME=/home/abel/hello

# test.sh脚本(注意需要考虑参数变量与系统的环境变量的冲突)

#/bin/sh -x
SCRIPT_PATH=$(cd `dirname $0`; pwd)
. ${SCRIPT_PATH}/env.properties
echo $JAVA_HOME
$JAVA_HOME/bin/java -version
  • 脚本启动时传递
./test.sh /home/abel/hello

# test.sh脚本(注意需要考虑参数变量与系统的环境变量的冲突)

#/bin/sh -x
JAVA_HOME=$1
echo $JAVA_HOME
$JAVA_HOME/bin/java -version

3. 带参数的脚本

  • 直接传递
  • -<参数名(a-z单字符)> <参数值>
  • –<参数名(单词名称等)> <参数值>

第一种是shell语法指定的传递方式,后面需要使用某些插件getoptgetops。具体如何编写这方面的脚本,请看系列的续集。

# 例子1
./start.sh a b c d
# 例子2
./start.sh -h
# 例子3
./start.sh --help

4. 脚本内调用其他脚本

脚本内调用其他脚本主要包括如下几种方式:

  • source 调用
  • exec 调用
  • fork 调用

关于这方面我的理解还不够,需要深入了解下。

# 例子1
./start.sh 
# 例子2
exec ./start.sh 

Reference

[1]. Linux shell - dirname $0 定位到运行脚本的相对位置
[2]. inux sh 脚本调用外部命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值