Я обнаружил странное поведение, которое я не знаю, как обойти.
$ var1=*
$ echo $var1
Audiobooks Downloads Desktop (etc.)
$ ls $var1
Audiobooks:
Downloads:
(etc)
Все кажется в порядке. При объявлении переменная расширяется и все остальное работает. Но посмотрите это:
$ var2=~/rpmbuild/{SRPMS,RPMS/*}/enki-*.rpm
$ echo $var2
/home/yajo/rpmbuild/{SRPMS,RPMS/*}/enki-*.rpm
$ ls $var2
ls: no se puede acceder a /home/yajo/rpmbuild/{SRPMS,RPMS/*}/enki-*.rpm: No existe el fichero o el directorio
$ ls /home/yajo/rpmbuild/{SRPMS,RPMS/*}/enki-*.rpm
/home/yajo/rpmbuild/RPMS/noarch/enki-12.10.3-1.fc18.noarch.rpm /home/yajo/rpmbuild/SRPMS/enki-12.10.3-1.fc18.src.rpm
/home/yajo/rpmbuild/RPMS/noarch/enki-12.10.3-1.fc19.noarch.rpm /home/yajo/rpmbuild/SRPMS/enki-12.10.3-1.fc19.src.rpm
На этот раз при объявлении расширяется только ~
, из-за чего я не могу передать его в качестве аргумента ls
. Однако передача той же строки буквально приводит к ожидаемым результатам.
Вопросы:
- Почему иногда расширяются, а иногда нет?
- Как имитировать поведение
$var1
с$var2
?
Спасибо.
Дополнительные примечания:
Я пробовал то же самое с двойными и одинарными кавычками, но с теми же плохими результатами.