~$ echo $(ls)
arguments.txt cecho.sh Desktop Documents Downloads example.txt Music Pictures Public
~$ echo $(ls "*.txt")
ls: cannot access *.txt: No such file or directory
¿Por qué falla el segundo comando subshell?
Elimine las comillas *.txty debería funcionar. Con comillas, shell buscará el nombre de archivo literal *.txt. Para explorar / experimentar, intente crear un archivo con nombre *.txtcomo touch '*.txt'y repita el comando.
bashy similareszsh) no son lo mismo que las comillas simples. Por ejemplo, la expansión del parámetro ($foo) se realiza entre comillas dobles, pero no entre comillas simples.De la misma manera que no puede ejecutarse
ls "*.txt"en un shell normal, tampoco puede ejecutarlo en un subshell. Cuando pones*.txtcomillas, hiciste unalsbúsqueda de un archivo literal llamado*.txtcuándo deberías estar haciendo esto:Una mejor manera de hacer esto es no usarlo
lsen absoluto.fuente
ls.ls -l "*.txt". O al menos yo puedo. No lo hago a menudo, pero cuando lo hago, generalmente me dice que no pudo encontrar * .txt ...