Bash SED Неопределенная команда `s ' - PullRequest
0 голосов
/ 03 декабря 2018

Я новичок в скриптах Bash и столкнулся с проблемой.Я искал, и похоже, что проблема может заключаться в содержимом моей переменной $ MODIFIED.

Интересно, кто-нибудь может помочь мне найти способ обойти это?

Я пытаюсь получитьпоследние 5 измененных файлов из каталога, а затем импортируйте их во второй скрипт, заменив первую строку во втором скрипте.

Мой код пока:

#Pipe last 5 modified files within Students and output to script2
#Checks if script2 exists to avoid overwriting.
cd ~/Students/Stu5
MODIFIED=$(ls -1t | head -5)


if [ -f ~/Documents/OSShellScripts/OSScript2.sh ]; then
        cd ~/Documents/OSShellScripts
        echo "OSScript2 already exists."
        sed -i "1s/.*/$MODIFIED/" ~/Documents/OSShellScripts/OSScript2.sh
fi

Это возвращает ошибку:sed: -e выражение # 1, char 17: неопределенная команда `s '

Если я изменю переменную MODIFIED, чтобы сказать« привет », она отлично работает.

Любая помощь с указанием мне, где яиду не так, было бы здорово, спасибо.

1 Ответ

0 голосов
/ 03 декабря 2018

Во-первых, правильно указывайте переменную bash при переходе к sed.

Во-вторых, помните, что вы передаете массив в sed.

Если это специально, вам нужно будет сделать что-то вроде этого:

sed -i '1s/.*/'"$(echo ${MODIFIED})"'/' ~/Documents/OSShellScripts/OSScript2.sh

Я бы также изменил команду замены sed s, чтобы изменить команду строки c, поскольку ваша переменная может содержать косую черту:

sed -i '1c\'"$(echo ${MODIFIED[@]})"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...