How can I use a variable that contains a space?

bash

Solution

Use double quotes if you have spaces inside a variable value:

FILENAME='file\ .test'
echo "$FILENAME"
echo joo
mv "$FILENAME" test.test

Problem

I have the following files: ``` ~/tmp/testbash$ l file 1.test move.sh* ``` where `move.sh` is: ``` #!/bin/bash #-x FILENAME='file\ .test' echo $FILENAME echo joo mv $FILENAME test.test ``` When I run `./move.sh`, I get this output and error: ``` file\ .test joo mv: target `test.test' is not a directory ``` The problem is that it executes the command as: ``` mv file .test test.test ``` and not as: ``` mv file\ .test test.test ``` How can I fix this?

Original source