在“while read”中使用 sed表达

发布于 2024-11-28 10:00:37 字数 809 浏览 1 评论 0原文

我对这个脚本很困惑。

#!/bin/bash

STARTDIR=$1
MNTDIR=/tmp/test/mnt

find $STARTDIR -type l  |
    while read file;
    do
       echo Found symlink file: $file
       DIR=`sed 's|/\w*$||'`
       MKDIR=${MNTDIR}${DIR}
       mkdir -p $MKDIR
       cp -L $file $MKDIR
    done

我将一些目录传递给 $1 参数,该目录有三个符号链接。在 while 语句中仅回显第一个匹配项,使用 sed 之后我丢失了所有其他匹配项。 寻找下面的输出:

[artyom@LBOX tmp]$ ls -lh /tmp/imp/
total 16K
lrwxrwxrwx 1 artyom adm   19 Aug  8 10:33 ok1 -> /tmp/imp/sym3/file1
lrwxrwxrwx 1 artyom adm   19 Aug  8 09:19 ok2 -> /tmp/imp/sym2/file2
lrwxrwxrwx 1 artyom adm   19 Aug  8 10:32 ok3 -> /tmp/imp/sym3/file3

[artyom@LBOX tmp]$ ./copy.sh /tmp/imp/
Found symlink file: /tmp/imp/ok1
[artyom@LBOX tmp]$ 

有人可以帮助解决这个问题吗? 谢谢

I am pretty stuck with that script.

#!/bin/bash

STARTDIR=$1
MNTDIR=/tmp/test/mnt

find $STARTDIR -type l  |
    while read file;
    do
       echo Found symlink file: $file
       DIR=`sed 's|/\w*$||'`
       MKDIR=${MNTDIR}${DIR}
       mkdir -p $MKDIR
       cp -L $file $MKDIR
    done

I passing some directory to $1 parameter, this directory have three symbolic links. In while statement echoed only first match, after using sed I lost all other matches.
Look for output below:

[artyom@LBOX tmp]$ ls -lh /tmp/imp/
total 16K
lrwxrwxrwx 1 artyom adm   19 Aug  8 10:33 ok1 -> /tmp/imp/sym3/file1
lrwxrwxrwx 1 artyom adm   19 Aug  8 09:19 ok2 -> /tmp/imp/sym2/file2
lrwxrwxrwx 1 artyom adm   19 Aug  8 10:32 ok3 -> /tmp/imp/sym3/file3

[artyom@LBOX tmp]$ ./copy.sh /tmp/imp/
Found symlink file: /tmp/imp/ok1
[artyom@LBOX tmp]$ 

Can somebody help with that issue?
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

檐上三寸雪 2024-12-05 10:00:37

你忘了给 sed 提供一些东西。如果没有显式输入,它不会读取此结构中的任何内容。无论如何,我不会使用这种方法,而只是使用类似的方法:

DIR=`dirname "$file"`

You forgot to feed something to sed. Without explicit input, it reads nothing in this construction. I wouldn't use this approach anyway, but just use something like:

DIR=`dirname "$file"`
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文