如何粘贴"我的目录/ * .class"到cp?

时间:2014-09-08 19:45:55

标签: bash shell escaping quotes

我有一个shell脚本,应该将所有类文件从一个目录复制到另一个目录(然后再对文件执行其他操作)。问题是该目录可以包含空格,并且只要在我的参数周围添加引号(“”),* .class就不会解析。我有这样的事情:

#!/bin/bash

# the source directory is stored in $1

# create temp dir to copy files into
tmp_dir=$(mktemp -d)

# copy files:
cp "$1/*.class" "tmp_dir"

我收到“我的目录/ * .class”没有文件或目录的错误。如果我手动执行此操作:

cp my\ directory/*.class
一切正常。但是,如果我运行它(无论是手动还是脚本)它都会失败:

cp "my directory/*.class"

我已尝试将"替换为',但它没有帮助。

我如何解决*.class,或者如何逃避论证以使其有效?

1 个答案:

答案 0 :(得分:2)

不要引用通配符本身:

tmpdir=$(mktemp -d)
cp -- "$1"/*.class "$tmpdir"