read -r var
status=$?
echo "\$var='$var':\$?=$status"
Случаи новой строки и Ctrl -D различаются переменной состояния.
В случае перехода на новую строку статус true (0 ), в то время как при задании Ctrl -D, статус ложный (1)
Насколько я понимаю, вы пытаетесь заменить шаблон abd
на xyz
из вашего текстового файла. Я попробовал следующее в NetBSD, и это работает:
#!/bin/bash
sed 's/.*abd.*/xyz/' $1
Результат был следующий:
$ cat input.txt
one.abd.
two.abd.
abd
three
four
$./test.sh input.txt
xyz
xyz
xyz
three
four
Я бы удалил -i
и <
из вашего скрипта, и он должен работать нормально. В качестве альтернативы я успешно пытался
#!/bin/bash
input=$1
sed 's/.*abd.*/xyz/' $input
попробуйте эту команду, она должна работать команда:sed -i 's/.*abd.*/xyz/' $1
(убедитесь, что ваш шаблон правильный )если вы используете i, он автоматически заменит файл.
Выполнить-sed -i 's/.*abd.*/xyz/' input.txt