0

我正在研究 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”的工作原理。

4

1 回答 1

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

于 2013-10-30T12:58:04.083 回答