Tengo una matriz

ARR=("option1" "option with space" "option3")

Si tengo un ejecutable que se va a ejecutar de esta manera

executable "option1" "option with space" "option3"

¿Cómo puedo lograrlo?

1
Abhishek Agarwal 15 dic. 2016 a las 14:34

2 respuestas

La mejor respuesta

Puedes ejecutarlo así:

arr=("option1" "option with space" "option3")

executable "${arr[@]}"
3
anubhava 15 dic. 2016 a las 11:44

Simplemente pase el contenido de la matriz al ejecutable como,

<executable> "${ARR[@]}"

Aquí es importante citar dos veces el contenido de la matriz, y perderlo dejaría la opción con espacios.

Una ilustración con un ejemplo: -

dudeOnMac:~$ touch file
dudeOnMac:~$ touch "file with spaces"
dudeOnMac:~$ ls
file            file with spaces
dudeOnMac:~$ touch "file_with@symbols"
dudeOnMac:~$ ls
file            file with spaces    file_with@symbols
dudeOnMac:~$ fileList=("file" "file with spaces" "file_with@symbols")
dudeOnMac:~$ ls "${fileList[@]}"
file            file with spaces    file_with@symbols
dudeOnMac:~$ ls -1tr "${fileList[@]}"
file
file with spaces
file_with@symbols
1
Inian 15 dic. 2016 a las 11:58