Pasar arguments a un command ejecutado por otro usuario

Tengo un script bash que se supone que debe tomar algunos arguments y luego ejecutarlo en un usuario diferente: test.sh

 #!/bin/bash sudo su user2 <<'EOF' echo $1 EOF 

Sin embargo, imprime en blanco:

 $ ./test.sh haha 

Entiendo que es porque la variable de entorno se restablece (?). ¿Cómo puedo pasar este argumento? En cuanto a la security, he oído que no debería desactivar el reinicio del entorno. La única forma en que se me ocurre resolver esto es escribir $1 en un file y luego volver a leerlo por usuario2. Pero supongo que debería haber una manera mucho mejor.

Solutions Collecting From Web of "Pasar arguments a un command ejecutado por otro usuario"