cphas no destination. Check the arguments.
cp "$file $dir"
cp "$file" "$dir"
ShellCheck found a
cp command with a single parameter. This may be because the source and destination was accidentally merged into a single argument, or because the line was broken in an invalid way.
cp statement by correctly specifying both source and destination.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.