从Bash脚本运行时命令不起作用?

时间:2012-03-03 22:36:57

标签: linux bash

我已经删除了一部我无法正常运行的Bash脚本。我想将文件夹 gmp-5.0.4 的内容复制到 gcc-4.6.3 / gmp 这些软件包早先在脚本中解压缩:

GMP_PACKAGE=ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.4.tar.bz2
GCC_PACKAGE=http://mirrors.kernel.org/gnu/gcc/gcc-4.6.3/gcc-core-4.6.3.tar.bz2

copy_math_libraries()
{
        LOCATION="$1"

        mkdir "$LOCATION/gmp"
        cp -v -r "$PACKAGES/`basename $GMP_PACKAGE .tar.bz2`/*" "$LOCATION/gmp"
}

copy_math_libraries "$PACKAGES/`basename $GCC_PACKAGE .tar.bz2 | sed s/core-//`"

使用set -x运行脚本时,我得到以下输出:

++ cp -v -r '/home/klaus/toolchain/packages/gmp-5.0.4/*' /home/klaus/toolchain/packages/gcc-4.6.3/gmp
cp: cannot stat `/home/klaus/toolchain/packages/gmp-5.0.4/*': No such file or directory

如果我打开另一个shell并手动运行完全相同的命令,一切正常:

cp -v -r /home/klaus/toolchain/packages/gmp-5.0.4/* /home/klaus/toolchain/packages/gcc-4.6.3/gmp

欢迎任何建议。

2 个答案:

答案 0 :(得分:2)

您的*未展开。

试试这个:

cp -v -r "$PACKAGES/`basename $GMP_PACKAGE .tar.bz2`/"* "$LOCATION/gmp"

答案 1 :(得分:0)

"…"阻止shell扩展(globbing)。这应该解决它:

cp -v -r "$PACKAGES/`basename $GMP_PACKAGE .tar.bz2`/"* "$LOCATION/gmp"