Bash
ls 用於 cut -f 字元串不起作用
我在將
cut
輸出輸入到ls
.這不起作用:
rep="S1_1000,0000-00-00c,0000-00-00d,0000-00-00e" ls tab_yeast/{`echo $rep | cut -f2- -d','`}*.tab.gz ls: cannot access tab_yeast/{0000-00-00c,0000-00-00d,0000-00-00e}*.tab.gz: No such file or directory
雖然 ls 在該字元串上有效:
ls tab_yeast/{0000-00-00c,0000-00-00d,0000-00-00e}*.tab.gz
任何的想法?
我不相信您可以使用大括號擴展嵌套命令。它似乎只能包含文字。你應該能夠利用
eval
得到你想要的東西。例子
$ a=1 $ b=5 $ echo {$a..$b} {1..5}
eval
但是,如果您echo
:$ eval echo {$a..$b} 1 2 3 4 5
你的例子
$ ls -l tab_yeast total 0 -rw-rw-r--. 1 saml saml 0 Feb 21 05:40 0000-00-00c.1.tab.gz -rw-rw-r--. 1 saml saml 0 Feb 21 05:40 0000-00-00d.1.tab.gz -rw-rw-r--. 1 saml saml 0 Feb 21 05:40 0000-00-00e.1.tab.gz -rw-rw-r--. 1 saml saml 0 Feb 21 05:40 S1_1000.1.tab.gz
展開顯示
$ eval echo tab_yeast/{`echo $rep | cut -f2- -d','`}*.tab.gz tab_yeast/0000-00-00c.1.tab.gz tab_yeast/0000-00-00d.1.tab.gz tab_yeast/0000-00-00e.1.tab.gz
你修改的命令
$ ls -1 $(eval echo tab_yeast/{`echo $rep | cut -f2- -d','`}*.tab.gz) tab_yeast/0000-00-00c.1.tab.gz tab_yeast/0000-00-00d.1.tab.gz tab_yeast/0000-00-00e.1.tab.gz