【问题标题】:Bash: Copy all arguments that are files to a directoryBash:将所有作为文件的参数复制到目录
【发布时间】:2011-11-30 18:42:21
【问题描述】:

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

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

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

假设 foo.out 和 text.txt 都存在,我想将它们复制到我的文件夹中。

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

谢谢!

【问题讨论】:

  • text.txt视为a.sh 的参数。上述命令执行./a.sh foo.out 并将其输出通过管道传输到tee -a text.txt

标签: bash command-line-arguments


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    (这里我假设管道符号错误地出现在问题中。)

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

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

    默认情况下,For 会循环遍历参数,此处使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-08
      • 1970-01-01
      • 2017-01-16
      • 2019-05-03
      • 2021-07-06
      • 1970-01-01
      • 2013-12-02
      • 1970-01-01
      相关资源
      最近更新 更多