Eu li este Q&A , mas parece sempre pensar o parâmetro como arquivo.
Quero transformar o comando diff <(ls old) <(ls new)
deste link em uma função que receba dois argumentos, embora seja um tanto redundante.
Eu tentei isso, que é apenas arg replace:
d2c(){
diff <($1) <($2)
}
então execute d2c "objdump -d foo1" "objdump -d foo2"
o showd2c:1: no such file or directory: objdump -d foo1
com fifo , o problema acima ainda está lá.
P: Como posso passar um argumento como '"objdump -d foo1"' e deixá-lo executar como comando?
Parece que você deseja que eles
$1
sejam$2
interpretados como código shell, em vez de ser o nome de um comando a ser executado, então você precisa:(observe o espaço inicial para evitar problemas com comandos cujo nome começa com
-
).Você também deve certificar-se de usar aspas simples e não duplas ao passar esses códigos para
d2c
remover o risco de introduzir vulnerabilidades de injeção de comando.Não
Por exemplo.