Как правильно выйти из восклицательных знаков в ударе?

Вот сценарий, чтобы сделать это:

aligntabs.pl

#!/usr/bin/perl

my $delim = '\s*\t\s*';

my %length = ();
my @lines = ();
for my $line (<>) {
    chomp $line;
    my @words = split $delim, $line;
    my $numwords = scalar(@words);
    for my $i (0..$numwords-1) {
        my $maxlen = $length{$i} // 0;
        my $thislen = length($words[$i]);
        $maxlen = ($thislen > $maxlen)? $thislen: $maxlen;
        $length{$i} = $maxlen;
    }
    push @lines, [@words];
}

foreach my $wordsref (@lines) {
    my @words = @$wordsref;
    my $numwords = scalar(@words);
    for my $i (0..$numwords-1) {
        if ($i < $numwords-1) {
            my $fieldlen = $length{$i};
            printf "%-${fieldlen}s ", $words[$i];
        }
        else {
            print $words[$i];
        }
    }
    print "\n";
}

использование

$ aligntabs.pl < infile
var1                                     var2 var3
var_with_long_name_which_ruins_alignment var2 var3
11
18.12.2010, 02:28
2 ответа

Используйте одинарные кавычки:

echo -e '#!/usr/bin/python\nimport string as s,random;print "".join(random.sample(s.letters+s.digits+s.punctuation,9))'>pg;chmod +x pg;./pg

Правила для ! был вид привитых на другие правила заключения в кавычки впоследствии (от csh). Они были очень полезной спиной, когда оболочки не имели редактирования командной строки, но некоторые люди все еще используют их теперь.

P.S. Так как Вы кодируете для удара:

echo $'#!/usr/bin/python\nimport string as s,random;print"".join(random.sample(s.letters+s.digits+s.punctuation,9))'>pg;chmod +x pg;./pg

Это работает над большинством нельдов:

echo python -c \''import string as s,random;print"".join(random.sample(s.letters+s.digits+s.punctuation,9))'\'>pg;chmod +x pg;./pg

(Не то, чтобы я понимаю, почему Вы хотите создать сценарий или почему название сценария должно быть двумя буквами.)

7
27.01.2020, 19:59
  • 1
    Не знал о $''.:) PS: Это должно было попытаться израсходовать те запасные символы. У меня есть чувство отходов, когда я отправляю твиты короче, чем 140 символов. –  badp 18.12.2010, 02:45
  • 2
    @badp: Так попытайтесь заставить его генерировать незабываемые пароли. (Как в pwgen по сравнению с. pwgen -s.) –  Gilles 'SO- stop being evil' 18.12.2010, 02:47
  • 3
    Мог бы также использовать dadadodo для незабываемых но бессмысленных паролей затем :) –  badp 18.12.2010, 02:50

Я должен был Погуглить, прежде чем я спросил.

Так как Вы не зависите от удара для расширения переменных [..] Вы могли использовать одинарные кавычки вместо этого. Строки в одинарных кавычках не расширены ударом.

гудок в ответ на то, Как я выхожу из восклицательного знака?

1
27.01.2020, 19:59
  • 1
    я не отмечаю этот ответ, как принято, тем не менее, потому что он отвечает только на этот конкретный случай. Обычно Вы не можете уйти без расширения. –  badp 18.12.2010, 02:26

Теги

Похожие вопросы