我有一个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
,或者如何逃避论证以使其有效?
答案 0 :(得分:2)
不要引用通配符本身:
tmpdir=$(mktemp -d)
cp -- "$1"/*.class "$tmpdir"