macOS Catalina: execute bash script on boot with launchctl
/Users/mark/Documents/ is a protected user folder (as Downloads and Desktop).

Usually you can add applications to System Preferences > Security &amp; Privacy > Privacy > Full Disk Access to enable access to these folders. Terminal is already added probably - the reason why no error is shown executing the script manually.

Change the destination of the log file in the shell script BatteryInfoOnBoot.sh to /Users/mark/Library/Logs/ and it will work.

Proof (Virtual machine - no battery inside ;-)):

user@host ~ % cat Library/Logs/battery-log.txt 
~~~~~~~~~
Tue Dec  3 01:23:55 CET 2019
Current battery percentage:

Cycle count:

Capacity stats:




As an unwanted alternative (because even a-typical log files belong to ~/Library/Logs/ or /Library/Logs/) you can keep your original file as it is but you have to add /bin/launchctl to System Preferences > Security &amp; Privacy > Privacy > Full Disk Access then.

Proof (still no battery inside):

user@host ~ % cat Documents/battery-log.txt 
~~~~~~~~~
Tue Dec  3 01:32:30 CET 2019
Current battery percentage:

Cycle count:

Capacity stats: