Eu não acho que isso seja um problema com sua função (ou, mais precisamente, eu não acho que isso seja um problema que você possa resolver em sua função). O bash analisa a linha de comando (incluindo a interpretação de strings entre aspas, várias expressões de colchetes, etc) antes de chamar sua função - antes mesmo que decida chamar sua função . Portanto, quando você digitar algo como gc fixed Greg's bug
, o bash exigirá que você feche a string entre aspas antes de executar a função; quando você digita gc printf("%s", integervar) not a good idea
, o bash se queixa dos parênteses e nunca chega ao ponto de decidir qual comando / função / o que quer que esteja sendo solicitado.
Eu presumo que o ponto de usar $*
foi evitar ter que citar o memorando na linha de comando, mas isso apenas evita ter que citar espaços na mensagem. Se a mensagem contiver outros metacaracteres de shell, você deverá citar ou escapar adequadamente:
gc "fixed Greg's bug"
gc 'printf("%s", integervar) not a good idea'
gc 'fixed this & deferred that'