LINUX.ORG.RU

обработка содержимого буфера обмена командой read

 ,


0

3

Доброго!

Есть текст:

~ $ cat -A intext
This is string one$
This is string two$
This is string three$
$

Когда я пытаюсь вставить его из буфера обмена в ответ на первое приглашение скрипта,

~ $ cat ./1234
#!/bin/bash

echo "Текст1?"
read text1
echo "Текст2?"
read text2
echo text1=$text1
echo text2=$text2
то получается следующее:
~ $ ./1234
Текст1?
This is string one
This is string two
This is string three
Текст2?
text1=This is string one
text2=This is string two
~ $ This is string three
This: команда не найдена
, то есть все скрипт без вывода приглашений далее просто присваивает каждой следующей переменной новую строку из текста. Когда переменные кончаются, скрипт завершается и следующая строка воспринимается, как команда. Ожидалось, что содержимое буфера обмена присвоится только первой переменной. Как этого добиться? Спасибо.

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

Всем, кто будет пытаться помочь, подумайте, возможно в ответ вы нарвётесь на грубость.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)

В принципе, вот это меня спасет:

-d delim continue until the first character of DELIM is read, rather than newline

rusya_rr
() автор топика

И завершение ввода по CTRL+D, так еще православнее

echo  "Текст1?"
while read -r line; do
  text1="$text1\n$line" 
done

echo  "Текст2?"
while read -r line; do
  text2="$text2\n$line" 
done
rusya_rr
() автор топика
Ответ на: комментарий от Black_Shadow

Наркоман? Там же видны только от тебя грубости и попытки показаться зведануто-умным. Сравни свои ответы с ответами других участников, чудила.

Ты и здесь даже продолжаешь.

Прогресс. Ты уже научился читать.

Совсем кукушка уехала?

anonymous
()
Ответ на: комментарий от anonymous

Там же видны только от тебя грубости

Наглая ложь

false ★★★★★
()
Ответ на: комментарий от anonymous

Перечитай заново. Вместо того, чтобы понять, что ssh не передаёт исполняемый код, пациент обзывает костылями решения, передающие через ssh код скрипта и выполняющие его.

достаточно просто сказать:

ssh user@host «имялокальногоскриптаиликоманды». Теперь твоя жизнь больше не будет прежней. Никогда.

Человек реально не понимает, что ssh передаёт текст, который будет выполнен интерпретатором на той стороне, а не передаёт файлы для исполнения на удалённой машине. Когда я пытаюсь ему показать, как работает ssh, он меня зачем-то начинает учить авторизации по ключам (как будто, я без него этого не знаю).

Black_Shadow ★★★★★
()
Ответ на: комментарий от Black_Shadow

Это все здорово. Но грубить - он тебе не грубил, и я перечитывал сообщения. Тебя судя по всему возмутило именно то, что он начал спорить, но грубости в ответ от тебя он получил первым.

anonymous
()
Ответ на: комментарий от anonymous

Мне не понравилось, как он начал спорить. Он начал поучать меня примером из моего же сообщения (правда, при этом не понимая, как это работает) с достаточно высокомерной фразой «Теперь твоя жизнь больше не будет прежней. Никогда.»

IMHO, это грубость. Но мне, честно говоря, не особо интересно продолжать эту беседу, так что предлагаю каждому остаться при своём мнении. Я для себя выводы относительно топикстартера сделал.

Black_Shadow ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.