Проблема возникает из-за того, что вы используете одинарные кавычки.В настоящее время вы заканчиваете свой ввод за 2. одиночной кавычкой.См. Сообщение об ошибке, оно информирует вас о том, что в нем что-то отсутствует.
Если у вас есть файл со следующим содержимым:
foo @x@ foo
Чем вы можете заменить содержимое, например:с помощью следующей команды:
sed 's/@x@/bar foo bar/' foo.txt > foo2.txt
И получить:
foo bar foo bar foo
Если вам нужно передать переменную, комментарий от Гордона Дэвиссона покажет вам правильный путь.
Кстати, если вы хотите использовать опцию inplace, в моем linux вам нужно будет использовать такую команду:
sed -i.old "s/@x@/${test}/" foo.txt
Но я думаю, что это может зависеть от вашей среды (mac?).