Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sed 如何在makefile中列出文件和替换模式_Sed_Makefile - Fatal编程技术网

Sed 如何在makefile中列出文件和替换模式

Sed 如何在makefile中列出文件和替换模式,sed,makefile,Sed,Makefile,我有这样的脚本 #!/bin/sh SHELL_CMD=busybox 并尝试使用makefile替换一些模式来bash shell #!/bin/bash #SHELL_CMD=busybox 以下是Makefile中的过程 release: @rm -rf my_temp/ @mkdir my_temp/ @cp dir1/burn_*.sh dir1/dump_*.sh my_temp/ @cd my_temp/; \ for f in

我有这样的脚本

#!/bin/sh
SHELL_CMD=busybox
并尝试使用makefile替换一些模式来bash shell

#!/bin/bash
#SHELL_CMD=busybox
以下是Makefile中的过程

release:
    @rm -rf my_temp/
    @mkdir my_temp/
    @cp dir1/burn_*.sh dir1/dump_*.sh my_temp/
    @cd my_temp/; \
        for f in $(shell ls); do \
            sed 's:#!/bin/sh\nSHELL_CMD=busybox:#!/bin/bash\n#SHELL_CMD=busybox:1' $${f} > temp; mv temp $${f}; \
        done; \
        cd ..;
    @cd my_temp/; tar -jcv -f bash.tar.bz2 *.sh; cd ..;
我的问题是:

1在for循环中,它没有在for循环中获得正确的脚本名称。 如何修补它

  • 在这方面有更好的模式吗

  • 在不匹配源字符串中的换行符的情况下进行替换会更好。除非您准备好执行一些复杂的sed-fu(),否则您只需在每一行上使用

    您可以这样做,以便在第一行和第二行上应用该操作。另外,不需要
    $(shell ls)
    部件。您只需运行一个shell glob表达式即可获得以
    .sh
    结尾的文件

    @for f in *.sh; do \
        sed -i -e '1 s:#!/bin/sh:#!/bin/bash:1' -e '2 s:^:#:1' $${f} ;\
    done
    

    如果您不希望使用
    -i
    就地替换,请使用最初显示的
    tmp
    文件方法。

    您最好在不尝试匹配源字符串中的换行符的情况下进行替换。除非您准备好执行一些复杂的sed-fu(),否则您只需在每一行上使用

    您可以这样做,以便在第一行和第二行上应用该操作。另外,不需要
    $(shell ls)
    部件。您只需运行一个shell glob表达式即可获得以
    .sh
    结尾的文件

    @for f in *.sh; do \
        sed -i -e '1 s:#!/bin/sh:#!/bin/bash:1' -e '2 s:^:#:1' $${f} ;\
    done
    
    如果您不希望使用
    -i
    就地替换,请使用最初显示的
    tmp
    文件方法