1

I am having issues with a very, very simple task. For follow-up use, I would like to store a dirname in a variable which has spaces in it. To see if it works, I call it with ls.

#!/bin/bash

BASE_DIR=/home/woodrow/Documents/"sleepy kittens"/
#SOURCE_FILE=${BASE_DIR}file.mp4

ls ${BASE_DIR}

But how do I prevent this nonsense?

ls: cannot access '/home/woodrow/Documents/sleepy': No such file or directory
ls: cannot access 'kittens': No such file or directory

Varitions that I tried but didn't work:

BASE_DIR=/home/woodrow/Documents/sleepy kittens/
BASE_DIR="/home/woodrow/Documents/sleepy kittens/"
BASE_DIR=/home/woodrow/Documents/`sleepy kittens`/
BASE_DIR=/home/woodrow/Documents/"`sleepy kittens`"/
BASE_DIR=$(/home/woodrow/Documents/sleepy kittens/)
BASE_DIR=$("/home/woodrow/Documents/sleepy kittens/")
BASE_DIR=$("`/home/woodrow/Documents/sleepy kittens/`")
BASE_DIR=$(echo /home/woodrow/Documents/sleepy kittens/)
BASE_DIR=$(echo "/home/woodrow/Documents/sleepy kittens/")
BASE_DIR=$(echo "`/home/woodrow/Documents/sleepy kittens/`")

ls "${BASE_DIR}"

BASE_DIR=/home/woodrow/Documents/
STEP="${BASE_DIR}sleepy kittens/"
ls ${STEP}

Can someone please enlighten me?

3
  • quote your variables and your problems will go away. Commented Feb 19, 2020 at 15:14
  • Varitions that I tried but didn't work: The BASE_DIR="/home/woodrow/Documents/sleepy kittens/" with ls "${BASE_DIR}" should work. Commented Feb 19, 2020 at 15:23
  • @KamilCuk Yes, that's true. But of all the things, I didn't try that combination. Thanks, guys. Commented Feb 19, 2020 at 15:43

1 Answer 1

1

You can do this :

(0) matias #> touch 'my spaced file.txt'
(0) matias #> myFile='my spaced file.txt'
(0) matias #> ls -lh "$myFile"
-rw-rw-r-- 1 matias matias 0 Feb 19 15:21 'my spaced file.txt'
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.