Bash - файл, массивы и вывод

Хотя это не то, что Вы спросили, это может быть тем, что Вы ищете...

Можно использовать "$0" как способ определить местоположение нижних индексов, которые расположены в том же каталоге как основной сценарий.

MYPATH="$(realpath "$0")"
MYDIR="$(dirname "$MYPATH")"
"$MYDIR/otherscript" ...

Так как основной сценарий является symlinked, который необходимо разыменовать $0 во-первых, использование realpath. Хотя dirname возвраты . если его аргумент не имеет никакой части каталога в этом примере realpath уже превратит аргумент в полный путь.

4
21.08.2018, 01:52
3 ответа

С

(( count + 3 ))

Вы просто добавление 3 к $count и отбрасыванию результата. Попробуйте

(( count = count + 3 ))
2
27.01.2020, 20:48
  • 1
    duuuuh... Я знал, что пропускал что-то!Спасибо!!!!!! –  SpaceDog 29.11.2011, 20:24

Обычно я не поклонник регистрации, "на самом деле необходимо сделать это этот путь" ответы, но кто-то уже исправил ошибку в сценарии, и я не могу остановить меня - Вы делаете это слишком трудно. Это намного легче с инструментом как sed или awk. Например, в sed:

$ sed 'N; N; s/\n/?/g' /path/to/your/file

Это читает три строки (один по умолчанию, другие два из-за N; N;), и новые строки замен с вопросительными знаками (s/\n/?/g). Это произведет преобразованную версию файла; если Вы хотите заменить содержание оперативное использование -i флаг

7
27.01.2020, 20:48
  • 1
    . Как я сказал, я - новичок в Bash. Я знаю много материала, но я далек от наличия действительно глубоких знаний. Спасибо за эту удивительную команду! Я знал sed, но я не знал, что он мог сделать материал как этот в одной строке!!!!!!!!!!!!!!!! –  SpaceDog 29.11.2011, 20:36
  • 2
    Почему адрес? Работы для меня без также. –  manatwork 29.11.2011, 20:36
  • 3
    @manatwork, О, я предполагаю, что он был бы, так как я использую строки сразу. Отредактированный, –  Michael Mrozek♦ 29.11.2011, 20:39
  • 4
    спасибо так или иначе это дает мне ошибку на тильде, говоря ": недопустимый живой человек ~ –  SpaceDog 29.11.2011, 20:43
  • 5
    @HananN. Глобальный; это заменяет все случаи вместо просто первого. echo aaa | sed 's/a/b/' произвел бы "блеяние"; echo aaa | sed 's/a/b/g' выводы "bbb" –  Michael Mrozek♦ 29.11.2011, 23:33

Другой способ сделать это - paste :

<infile paste -d '?' - - -

При этом будут вставлены по три строки за раз с использованием вопросительного знака в качестве разделителя. Если вам нужна скорость / быстрая обработка, то это правильный путь. Кроме того, как Стефан Шазелас 'указывает , вы даже можете редактировать файл на месте.

2
27.01.2020, 20:48

Теги

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