使用expand函数理解shell脚本代码

时间:2013-10-30 11:18:07

标签: bash shell

我正在开发shell脚本。

EXEC $CXCHOME+"/etc/expand_in_place" $MMSHOME+"/PDM/bin/pmr_pdm_aos"**

CXCHOME "/opt/ericsson/aos/PDM"
MMSHOME "/opt/ericsson/aos"

expand_in_place的代码如下 -

#!/bin/bash

. $INST_DATADIR/$PKG/install/aosbootcommon.sh

filename=`basename $1`

tmpfile="/tmp/$filename.$$"

rm -f "$tmpfile"
cp -p "$1" "$tmpfile"
echoLog "Expanding $1..."

expand "$tmpfile" "$1"
rm -f "$tmpfile"

cleanExit 0

我想知道“expand_in_place”的工作原理。

1 个答案:

答案 0 :(得分:0)

答案很长:

#!/bin/bash     

使用/ bin / bash程序处理后面的代码。

. $INST_DATADIR/$PKG/install/aosbootcommon.sh

在同一过程中读取并执行此文件中的代码

filename=`basename $1`

运行basename程序,传入第一个命令行参数(使用man basename找出它的作用)。反向标记是一种不推荐使用的方法来捕获程序的输出。在这种情况下,basename的输出会被放入filename变量。

tmpfile="/tmp/$filename.$$"

将变量tmpfile设置为/ tmp,然后设置filename的值,然后输出当前进程ID。 $是一个运算符,它为我们提供变量的值。 $$为我们提供了当前PID值。

rm -f "$tmpfile"

运行传递这些参数的rm程序:使用man rm找出它的作用。

cp -p "$1" "$tmpfile"

运行传递这些参数的cp程序:使用man cp找出它的作用。

echoLog "Expanding $1..."

我不知道echoLog做了什么,它可能是$INST_DATADIR/$PKG/install/aosbootcommon.sh中定义的本地函数

expand "$tmpfile" "$1"

使用这些参数运行expand程序,使用man expand找出它的作用。

rm -f "$tmpfile"

运行传递这些参数的rm程序:使用man rm找出它的作用。

cleanExit 0

我不知道cleanExit做了什么,它可能是$INST_DATADIR/$PKG/install/aosbootcommon.sh中定义的本地函数