Les*_*zek 5 ls bash string cut
我在将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
Run Code Online (Sandbox Code Playgroud)
而 ls 在该字符串上有效:
ls tab_yeast/{0000-00-00c,0000-00-00d,0000-00-00e}*.tab.gz
Run Code Online (Sandbox Code Playgroud)
任何的想法?
我不相信您可以使用大括号扩展来嵌套命令。它似乎只能包含文字。不过,您应该能够利用它eval
来获得您想要的东西。
$ a=1
$ b=5
$ echo {$a..$b}
{1..5}
Run Code Online (Sandbox Code Playgroud)
eval
但是,如果您echo
:
$ eval echo {$a..$b}
1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
$ 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
Run Code Online (Sandbox Code Playgroud)
显示扩展
$ 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
Run Code Online (Sandbox Code Playgroud)
你修改后的命令
$ 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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1506 次 |
最近记录: |