I have hundreds of sub-directories which contain a dollar sign (i.e., "$"$)
as the 1st character in their names, each of which needs to be visited.
These sub-directories can not be renamed. The bash script function tries to visit each
and (so far) to echo the path its in. Trying to do this via a built path string then eval it.
The line that print "cmd=${cmd}"cmd=${cmd} indeed shows "cmd=cd /rbyoko/c/$Ono.RCB"cmd=cd /rbyoko/c/$Ono.RCB as expected -
however, the eval command mis-interprets the $Ono.RCB$Ono.RCB (probably as $Ono$Ono being empty var)
and results in: "-bash: cd: /rbyoko/c/.BIN/: No such file or directory"-bash: cd: /rbyoko/c/.BIN/: No such file or directory
then the following line prints "We are in /home/user"We are in /home/user (where the script was run from).
My question: how do I eval the string (and/or escape the sub-directory with "$"$) to
actually succeed in visiting the desired sub-directory?
Here is my function:
visit_tree_recbin()
{
strings="cdhlotpw"
MACHINE=`uname -a`
PWD=`pwd`
for i in $(seq 1 ${#strings})
do
c="${strings:i-1:1}"
echo "Letter $i: $c"
#build eval string to do: cd "/rbyoko/${c}/\$Ono.RCB/"
x1="cd /rbyoko/${c}/"
x2="\$"
x3="Ono.RCB/"
cmd="${x1}${x2}${x3}"
echo "cmd=${cmd}"
eval "${x1}${x2}${x3}"
echo "We are in " `pwd`
done
}