I have a script that takes filenames as positional parameters. I perform a few operations on these and then tar them. Currently my script is not working. The echo line is there for debugging purposes.
Please clarify this statement
But when I try to tar with in the script if can file the file I want to tar.
SNIPPET
while [[ $# > 0 ]]; do
key="$1"
shift
files=$files" "\"${key}\"
done
echo tar -cvf backup.tar $files
tar -cvf backup.tar $files
OUTPUT:
tar -cvf backup.tar "test.txt"
tar: "test.txt": Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
I am using the double quotes around the filename (test.txt) as I want to handle files with spaces.
If I were to remove the quotes in the script (\"), it will work but then I can’t handle filenames with spaces.
Any ideas?
tar -cvf backup.tar "$@"
? – B Layer Oct 14 '17 at 00:29files="$files \"${key}\""
? Or use an array...files+=("$key")
and thentar -cvf backup.tar ${files[@]}
– jesse_b Oct 14 '17 at 00:32$files
variable in the tar statement unquoted though? Otherwise, wont they be treated as one argument? – jesse_b Oct 14 '17 at 00:44