Bash:将所有文件参数复制到目录中

时间:2011-10-04 14:54:17

标签: bash command-line-arguments

我有一个名为a.sh的可执行文件。它需要一个未知数量的参数。从参数列表中,我想将所有文件复制到另一个文件夹(/ myfolder)。

例如,如果我在命令行中输入:

./a.sh foo.out | tee -a text.txt

假设foo.out和text.txt都存在,我想将它们复制到myfolder。

我正在考虑将所有参数写入文件并逐行读取文件,并使用if [-f]语句进行检查。那里有更整洁/更清洁的解决方案吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

稍微有些棘手,因为你列出的文件实际上并不是a.sh的所有参数。 shell将它们分开,因此foo.out是a.sh的参数,text.txt是tee的参数。执行建议的唯一方法是将整个命令行存储在一个字符串中,处理它中的文件,然后评估该字符串。

答案 1 :(得分:0)

(这里我假设管道符号是错误的问题。)

无需写入文件,因为您可以轻松检查参数,而无需知道有多少参数。

for arg ; do
  if [ -f $arg ]; then
    cp $arg myfolder
  fi
done

默认情况下会循环遍历参数,这是在这里使用的。