I am trying to find the pathname with the most characters in it. There might be better ways to do this. But I would like to know why this problem occurs.
LONGEST_CNT=0
find samples/ | while read line
do
line_length=$(echo $line | wc -m)
if [[ $line_length -gt $LONGEST_CNT ]]
then
LONGEST_CNT=$line_length
LONGEST_STR=$line
fi
done
echo $LONGEST_CNT : $LONGEST_STR
It somehow always returns:
0 :
If I print the results for debugging inside the while loop the values are correct. So why bash does not make these variables global?
When you pipe into a
whileloop in Bash, it creates a subshell. When the subshell exits, all variables return to their previous values (which may be null or unset). This can be prevented by using process substitution.