On systems that can support it, there is an additional expansion available: process substitution
A list is run asynchronously, and its input or output appears as a filename (ie file path)
It permits to pass a string as a file path.
Example: If the cli script expect only a path (ie a file descriptor), you can still give it generated content like that:
script <(echo "Content")
echo test | tee >(cat) >/dev/null
When using process substitution, bash creates the file descriptor at /dev/fd/x such as /dev/fd/63