Você pode usar a substituição de comando :
oo.sh "$(cat /etc/httpd/conf/httpd.conf)"
Isso executará cat /etc/httpd/conf/httpd.conf
e colocará a saída (o conteúdo do arquivo) no primeiro argumento dado a oo.sh
. É citado, então é passado como um único argumento - espaços e caracteres especiais são passados intocados. oo.sh
recebe um único argumento.
Mais amplamente, no entanto, talvez seja melhor passar o nome do arquivo para o script, se possível, ou fornecer o conteúdo do arquivo como entrada padrão ( oo.sh < /etc/httpd/conf/httpd.conf
). Além de ser mais padrão, há um tamanho máximo que todos os argumentos de linha de comando juntos podem ser, e um arquivo pode ser mais longo que isso. Mesmo se funcionar agora, se esse arquivo puder crescer ao longo do tempo, eventualmente, passar a coisa toda como um argumento parará de funcionar com um erro "lista de argumentos muito longa".
Você pode encontrar esse limite com getconf ARG_MAX
. O tamanho varia drasticamente: eu tenho sistemas aqui com limites de 2MB e limites de 256KB. Se o seu arquivo sempre será pequeno, você não precisa se preocupar, mas caso contrário, você deve tentar outra maneira de inserir os dados no script.