Это может произойти при пропавших без вести строки хижины наверху сценария. Удостоверьтесь, что сценарий запускается с:
#!/bin/bash
Это только собралось для меня, когда я запустил скрипт с sudo -u <user>
Можно использовать следующую команду:
awk '{print $1}' filename > newfile
, где имя файла
- имя исходного большого файла, а newfile
- файл, который получит результаты.
Ваш код вполне нормальный, я бы, вероятно, сделал это в качестве быстрого решения. Более эффективно выйти из sed сразу после печати: sed -n '1 {p; q}'
, чтобы избежать чтения всего файла без причины.
Сейчас наиболее неудобной частью является чтение файла дважды, чтобы получить первые две строки. Можно просто использовать сборки оболочки:
{ read -r var1; read -r var2; } < infile
и затем либо сохранить sed -i '1,2d'
, либо просто использовать tail -n + 3 > outfile; mv infile файла комплекта
.
Последний способ сделать это за один проход - считывать две переменные с помощью read
, а затем выводить остальные:
{ read -r var1; read -r var2; cat; } < infile > outfile
Обратите внимание, что я сохраняю выходные данные в другом файле (и затем вы можете скопировать их обратно). Это не так «элегантно», как встроенная модификация с sed
, но это безопаснее, и он делает то же количество письма. Эта последняя версия также считывает файл только один, а не три раза.
Я нашел обходной путь.
Несколько серверов с параметром -L
(указывающим имя сокета).
# set variable
# create 2 sessions
$ export VAR=aaaaa
$ tmux -L $VAR new -A -s $VAR -d
$ export VAR=bbbbb
$ tmux -L $VAR new -A -s $VAR -d
$ tmux ls
failed to connect to server
$ tmux -L aaaaa ls
aaaaa: 1 windows (created Fri Jan 23 12:12:46 2015) [207x50]
$ tmux -L bbbbb ls
bbbbb: 1 windows (created Fri Jan 23 12:12:55 2015) [207x50]
# connect to sessions
# check value of variable
$ tmux -L aaaaa att -t aaaaa
$ echo $VAR
aaaaa
$ tmux -L bbbbb att -t bbbbb
$ echo $VAR
bbbbb <-------- now i can see 'bbbbb' here