Você está usando o caractere hash # como dados para enviar, mas este caractere reservado para comentar em shells
Experimente assim:
( # Let run listener in background before trying to send to CAN
while true;
do
msg_candump="$(candump vcan0 -T 1000)" # read CAN for 1 second
if [[ ${#msg_candump} > 1 ]]; then #received msg
echo "$msg_candump"
fi
sleep 0.025 # Give system a little breath
done
) &
PID=$!
cansend vcan0 '004#0152FEE400000000' # <- quotes are matter
sleep 5
kill -9 $PID