• 0 Posts
  • 9 Comments
Joined 4 months ago
cake
Cake day: July 12th, 2024

help-circle





  • can anyone help me figure out, why the following shell script does not work:

    #!/bin/bash
    while IFS= read -d $'\0' -r "dir" ; do 
          dir=${dir:2};
          echo "${dir}"\#;
          cd "'""${dir}""'" ;
          ls;
          ##doing something else
         # cd  ..;
    done < <(find ./  -mindepth 1 -maxdepth 1 -type d -print0)
    

    I am running it in a location with a lots of folders containing spaces (think of it like this:

    /location containing spaces# ls
    'foo ba' 'baa foo ' 'tee pot'
    

    I get errors of the following form:

    script.sh: line 5: cd: 'baa foo ': No such file or directory

    but when I manually enter cd 'baa foo' it works fine. Why could that be? (the echo retuns something like “foo baa #” .) It really confuses me that the cd with the exact same string works when I enter it manually. I have allready tried leaving out the quotes in the cd command and escaping the spaces using dir=$(printf %q "${dir}"); before the cd but that did not work either.

    tbh I am new to shell scripts so maybe there is something obvious I overlooked.