我想压缩一些shell代码,以便在闪存有限的嵌入式linux平台上部署
显然,您可以尝试使用正则表达式来搜索空格,但唯一安全的方法是使用完整的解析器。
有没有针对shell脚本语言的精简工具(类似于jsMin和YUI Compressor)?
我对ash shell特别感兴趣,但我接受bash :)
发布于 2011-08-24 02:10:44
因此,节省了大约28%。
#!/usr/bin/env perl
use strict;
use warnings;
foreach my $file (@ARGV)
{
open my $fh, "<", $file or die "Failed to open $file";
my $line = <>;
print $line;
while ($line = <>)
{
next if $line =~ m/^#/;
next if $line =~ m/^\s*$/;
$line =~ s/^\s+//;
$line =~ s/\s+$//;
print $line;
}
close $fh;
}这将保持第一行(通常是shebang行,尽管我的许多脚本已经足够老了,并且无人照管了足够长的时间,所以它们使用:而不是shebang)保持不变。这不会试图去掉尾随注释(空格、散列、其他字符),但我并不倾向于使用它们。添加替换命令:
$line =~ s/\s+#[^\\'"`]*$//;从我的语料库中留下了275035个字符(节省了大约29%)。用'#!/bin/sh‘替换所有的第一行可以节省更多的时间。在大约700行中有多个连续的空格或制表符,但压缩它们所节省的额外空间是相当有限的(其中许多都在搜索不应该压缩的“空格或制表符”组合)。
显然,如果节省大约1/3的空间就足够了,那么这个脚本可能会有一些用处,尽管它是简单的。然而,减少更多的空间将是困难的,如果不运行严重的风险破坏您正在最小化的脚本。
https://stackoverflow.com/questions/7162453
复制相似问题