Estoy tratando de crear un método de función en un script bash que ejecute un comando que los parámetros proporcionan al método.
Significa algo como esto:
special_execute()
{
# Some code
# Here's the point where the command gets executed
$@
# More code
}
special_execute echo "abc"
Ya he probado yo $@
, "$@"
, $*
, "$*"
¿cómo podría hacerlo?
$@
funciona para mí ...special() { $@; }
...special echo "foo"
dafoo
perl -MTime::HiRes=sleep -le 'for(1..100) { print; sleep 0.05; }'
ytar -cvf "backups/test.tar" -P "backups/uncompressed_server_backup_(DO NOT TOUCH!)/server/"
"$@"
, entonces tendrá más éxito :)Respuestas:
Creo que es solo un problema de citas cuando pasas los argumentos a la función.
Intenta llamarlo así:
Si no desea las comillas simples
abc
, cambie las citas de esta manera:Depuración
Puede ajustar los elementos internos de la función para que se repita con más verbosidad.
Luego, cuando ejecuta comandos a través de la función,
special_execute
puede ver lo que está sucediendo.ejemplo ps:
ejemplo perl:
Argumento de análisis
$1
Podrías hacer algo como esto para analizar cualquier argumento pasado como
$1
.Ejemplo
con depuración habilitada:
con depuración desactivada
-123
:con depuración desactivada
-456
:fuente
alias
.