Почему делает “$i | sed” не, работают?

При поиске монитора сети, который работает как внешний процесс и может обеспечить статистику для каждого подключения по числу переданных байтов, то IPTraf может сделать это.

Смотрите на снимки экрана в качестве примера, особенно TCP/UDP статистическая разбивка.

2
21.12.2011, 20:21
2 ответа

Можно заменить значением $i в видеть точную команду Вы пытаетесь работать:

app4/ | sed -e "s/^.*\(.\)$/\1/"

Это не работает потому что app4/ не команда. Вы пытаетесь передать по каналу app4/ в sed, таким образом, необходимо использовать что-то, что это производит app4/:

echo app4/ | sed -e "s/^.*\(.\)$/\1/"

Это работает, но Вы не должны действительно использовать sed для этого; bash имеет довольно много инструментов обработки строк. Например, ${i#} даст Вам длину $i, и ${i:j} даст Вам подстроку, запускающуюся в j, так ${i:$((${i#}-1))} даст Вам последний знак.

Самый легкий способ сделать, что Вы пробуете, вероятно, с ${i%/}. Это возвратится $i, но снимет изоляцию с a / от конца, если существует тот:

$ i="app4"; echo ${i%/}
app4
$ i="app4/"; echo ${i%/}
app4

Таким образом:

if [ "${i%/}" = "$i" ]
then
    echo "file"
else
    echo "folder"
fi

Однако, если все, что Вы действительно хотите, должно знать если $i действительный каталог, можно просто использовать:

if [ -d "$i" ]
2
27.01.2020, 22:07
  • 1
    ! я не могу использовать-d, потому что я должен создать тот каталог –  Matteo Pagliazzi 21.12.2011, 22:44
  • 2
    Затем создайте dir, если он отсутствует с: если [! $i-d]; затем mkdir-p $i; fi –  Johan 22.12.2011, 08:39
  • 3
    @Johan: Или просто mkdir -p $i, который ничего не делает, если это уже - каталог. –  Keith Thompson 11.01.2012, 03:17

Самый легкий способ проверить, ли переменные концы в/:

[[ $i = */ ]]

.. хотя, поскольку Johan сказал, можно просто проверить, существует ли это, и создайте его если нет. Это должно однако быть заключено в кавычки правильно:

if [[ ! -d $i ]]; then
    mkdir -p "$i" || exit 1
fi

Мы не должны заключать расширения в кавычки внутри [[..]] который, наряду с его большей утилитой и скоростью, делает намного более хорошим использовать; мы определенно должны заключить параметр в кавычки к mkdir.

1
27.01.2020, 22:07

Теги

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