【发布时间】:2015-07-07 23:06:47
【问题描述】:
我想创建一个脚本,允许我从命令行输入多个文件名,并让脚本将这些文件复制到另一个目录。这就是我正在尝试的,但我不断收到
的错误第 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 行:预期二进制运算符”错误。谁能告诉我我做错了什么?
【问题讨论】:
-
创建一个只包含
FILE=$*和echo "[ -e $DIRECTORY/$FILE ]"的新脚本,看看当你使用这些参数运行它时会得到什么。然后看看该错误是否更有意义(并考虑如何正确测试目标目录中的多个文件。 -
一个很好的 Bash 调试技巧是添加行
set -x这将导致 bash 在执行之前打印每一行。这样,您将能够看到变量是如何扩展的,以及每行在执行之前的样子。 -
@EtanReisner 我得到 [ -e /test.doc ] 我将脚本命名为 stack.sh,然后运行 ./stack.sh test.doc
-
这不是你最初运行的。使用两个参数会向您显示问题。这就是为什么我说“用这些参数运行它”。
标签: linux bash scripting terminal