lnhas no destination. Check the arguments, or specify
ln "$file $dir"
ln "$file" "$dir"
ln /foo/bar/baz .
ShellCheck found a
ln command with a single parameter. This may be because the source and destination was accidentally merged into a single argument, because the line was broken in an invalid way, or because you're using a non-standard invocation of
ln that defaults to linking the argument into the current directory.
If you wanted to specify both source and destination, fix the
If you wanted to link a file into the current directory, prefer using the more explicit and POSIX standard invocation
ln /your/file .
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.