Vrrp check script succeeds when run in shell, fails when run by vrrp

I don’t see any issues with your scrip

set high-availability vrrp group group1 health-check script '/config/scripts/vrrp.sh'
set high-availability vrrp group group1 interface 'eth0'
set high-availability vrrp group group1 virtual-address '10.0.0.254/24'
set high-availability vrrp group group1 vrid '1'

vyos@R1# cat /config/scripts/vrrp.sh 
#!/bin/bash
echo "$(date) test" >> /tmp/checkvtysh
/usr/bin/vtysh -c "show ip route" >> /tmp/checkvtysh 2>&1

vyos@R1# run show version 
Version:          VyOS 1.3-rolling-201912190503
Built by:         autobuild@vyos.net
Built on:         Thu 19 Dec 2019 05:03 UTC

vyos@R1# sudo cat /tmp/checkvtysh 
Thu 19 Dec 2019 06:43:53 PM UTC test
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
       F - PBR, f - OpenFabric,
       > - selected route, * - FIB route, q - queued route, r - rejected route

S>* 0.0.0.0/0 [1/0] via 10.0.0.2, eth0, 11:02:52
S   0.0.0.0/0 [210/0] via 192.168.0.1, eth1, 11:03:09
C>* 10.0.0.0/24 is directly connected, eth0, 11:03:06
C>* 172.16.0.0/24 is directly connected, vti0, 11:02:44
C>* 192.168.0.0/24 is directly connected, eth1, 11:03:11