Como sua função upload () está esperando um parâmetro ($ 1) para usar como o nome do arquivo arquivado, passe-o na linha de comando:
archive foo.7z 1.rar pass.tar.gz d7432.png && upload foo.7z
Se foo.7z também for um parâmetro variável para archive (), simplesmente passe a mesma variável para upload ():
archive $archivename 1.rar pass.tar.gz d7432.png && upload $archivename
Eu recomendaria o &&
glue, já que você provavelmente não quer tentar enviar o arquivo se a função archive () não tiver êxito.
Aqui está a função de amostra para .bashrc
:
share()
{
ARCHIVE_NAME="$1"
archive "$ARCHIVE_NAME" "$@" && upload "$ARCHIVE_NAME"
}