Хотя это не то, что Вы спросили, это может быть тем, что Вы ищете...
Можно использовать "$0"
как способ определить местоположение нижних индексов, которые расположены в том же каталоге как основной сценарий.
MYPATH="$(realpath "$0")"
MYDIR="$(dirname "$MYPATH")"
"$MYDIR/otherscript" ...
Так как основной сценарий является symlinked, который необходимо разыменовать $0
во-первых, использование realpath
. Хотя dirname
возвраты .
если его аргумент не имеет никакой части каталога в этом примере realpath
уже превратит аргумент в полный путь.
С
(( count + 3 ))
Вы просто добавление 3 к $count и отбрасыванию результата. Попробуйте
(( count = count + 3 ))
Обычно я не поклонник регистрации, "на самом деле необходимо сделать это этот путь" ответы, но кто-то уже исправил ошибку в сценарии, и я не могу остановить меня - Вы делаете это слишком трудно. Это намного легче с инструментом как sed
или awk
. Например, в sed
:
$ sed 'N; N; s/\n/?/g' /path/to/your/file
Это читает три строки (один по умолчанию, другие два из-за N; N;
), и новые строки замен с вопросительными знаками (s/\n/?/g
). Это произведет преобразованную версию файла; если Вы хотите заменить содержание оперативное использование -i
флаг
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 '?' - - -
При этом будут вставлены по три строки за раз с использованием вопросительного знака в качестве разделителя. Если вам нужна скорость / быстрая обработка, то это правильный путь. Кроме того, как Стефан Шазелас 'указывает , вы даже можете редактировать файл на месте.