Ik probeer een bash script te schrijven waarin ik een 'cd' wil doen naar een willekeurige directory. De voor de hand liggende code is de volgende:
Het probleem is nu dat bij filenames met spaties het fout gaat. For loopt blijkbaar over woorden gescheiden door spaties. Een aanpassing van de for-loop met sed werkte ook niet:
Ik heb dit probleem vaker gevonden met de search, maar telkens las men daar vanuit een file en een temporary file aanmaken is op de eerste plaats smerig en op de tweede plaats onveilig. Heeft iemand hier een oplossing voor?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| count=`ls -l $workdir | wc -l`
dirnum=$RANDOM
let "dirnum %= $count+1"
i=0
for line in `ls $workdir`
do
if [ $i -eq $dirnum ]
then
newdir=$line
break 1
fi
let "i+=1"
done
cd $newdir |
Het probleem is nu dat bij filenames met spaties het fout gaat. For loopt blijkbaar over woorden gescheiden door spaties. Een aanpassing van de for-loop met sed werkte ook niet:
code:
1
| for line in `ls $workdir | sed 's/ /\\ /g'` |
Ik heb dit probleem vaker gevonden met de search, maar telkens las men daar vanuit een file en een temporary file aanmaken is op de eerste plaats smerig en op de tweede plaats onveilig. Heeft iemand hier een oplossing voor?