回避方法がわからない奇妙な動作を見つけました。
$ 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
今回は、 at 宣言のみ~
が展開されるため、 に引数として渡すことができませんls
。ただし、同じ文字列をそのまま渡すと、期待どおりの結果が得られます。
質問は次のとおりです。
- 拡大するときとしないときがあるのはなぜですか?
$var1
withの動作を模倣する方法は$var2
?
ありがとう。
特記事項:
二重引用符と単一引用符で同じことを試みましたが、同じ悪い結果になりました。