我想创建一个脚本,允许我从命令行输入多个文件名,并让脚本将这些文件复制到另一个目录。这是我正在尝试但我不断收到
的错误第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行:二元运算符预期”错误。谁能告诉我我做错了什么?
答案 0 :(得分:1)
作为一个可能的问题,如果你有一个带空格的文件名或有多个参数,$ *会有空格,所以[ -e $DIR/$FILE ]
会扩展为有很多单词,比如[ -e /.test_files/First word and more ]
和{{ 1}}只需要1个单词。尝试将其放在引号中,如
-e
当然,您可能只想在$ FILE中存储$ 1来获得第一个参数。
测试你想要遍历参数的所有参数,并用
之类的东西测试每个参数if [ -e "$DIRECTORY/$FILE" ]
在$ @周围使用引号来保留原始参数中的空格