使用命令行参数中的bash脚本复制多个文件?

时间:2015-04-28 21:50:58

标签: linux bash scripting terminal

我想创建一个脚本,允许我从命令行输入多个文件名,并让脚本将这些文件复制到另一个目录。这是我正在尝试但我不断收到

的错误

第10行:预期的二元运算符

#!/bin/bash

DIRECTORY=/.test_files
FILE=$*
if [ -e $DIRECTORY/$FILE ]; then
        echo "File already exists"
else
        cp $FILE $DIRECTORY
fi

因此,如果脚本名为copfiles.sh,我正在写...

./copyfiles.sh doc1.txt doc2.txt

它将移动文件,但如果它们已经存在,则不会读取错误消息。

此外,无论文件是否存在,我都会收到“第10行:二元运算符预期”错误。谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:1)

作为一个可能的问题,如果你有一个带空格的文件名或有多个参数,$ *会有空格,所以[ -e $DIR/$FILE ]会扩展为有很多单词,比如[ -e /.test_files/First word and more ]和{{ 1}}只需要1个单词。尝试将其放在引号中,如

-e

当然,您可能只想在$ FILE中存储$ 1来获得第一个参数。

测试你想要遍历参数的所有参数,并用

之类的东西测试每个参数
if [ -e "$DIRECTORY/$FILE" ]

在$ @周围使用引号来保留原始参数中的空格