开发者

Access * in bash for loop

I have a bash for loop like this:

for i in /long/path/filename*; do
    echo ${i%filename*}/other/path/c01/{magic}; 
done

Now I would like to get {magic}开发者_运维百科 replaced by the text matched by *


Maybe like this:

for i in /long/path/filename*; do
    A=${i/\/long\/path\/filename/}
    echo ${i%filename*}/other/path/c01/${A}
done


for i in /long/path/filename*; 
do echo ${i%filename*}/other/path/c01/${i#/long/path/filename}; 
done

From man bash:

   ${parameter#word}
   ${parameter##word}
          The word is expanded to produce a pattern just  as  in  pathname
          expansion.  If the pattern matches the beginning of the value of
          parameter, then the result of  the  expansion  is  the  expanded
          value of parameter with the shortest matching pattern (the ‘‘#’’
          case) or the longest matching pattern (the ‘‘##’’ case) deleted.
          If parameter is @ or *, the pattern removal operation is applied
          to each positional parameter in turn, and the expansion  is  the
          resultant  list.   If parameter is an array variable subscripted
          with @ or *, the pattern removal operation is  applied  to  each
          member  of the array in turn, and the expansion is the resultant
          list.
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜