在子 shell 中运行命令

Din*_*esh 4 bash shell automation sh subshell

我想自动化一项我经常执行的重复任务。这就是为不同的架构创建 rpm。要编译代码并创建 rpm,我需要设置项目环境。设置 env 后,我将为当前架构创建 rpm,并且我应该通过再次设置 env 为其他架构构建 rpm。

我正在尝试使这个过程自动化。问题是一旦设置了 env,我将成为新的 shell,因此我的脚本在子 shell 中不可见。如何自动化这个?

这就是我尝试过的。

cd $project_dir
setenv.sh x86      #creates new sub shell
make clean
make rpm
cp *rpm ~/

exit              #exit from the sub shell

setenv.sh x86_64     #creates new shell
make clean
make rpm
cp *.rpm ~/

exit
Run Code Online (Sandbox Code Playgroud)

将 env 设置为 x86 后,接下来的命令不会被执行。

anu*_*ava 6

您可以强制 2 个部分在子 shell 中执行,如下所示:

cd "$project_dir"

(. setenv.sh x86
make clean
make rpm
cp *rpm ~/)

(. setenv.sh x86_64
make clean
make rpm
cp *.rpm ~/)
Run Code Online (Sandbox Code Playgroud)