Как добавить строку к результату cat в bash? - PullRequest
0 голосов
/ 07 апреля 2020

Информация о файле содержит некоторую определенную информацию в строке, начинающейся с myline. Я пытаюсь передать его в скрипт, как это:

bash myscript `cat info | grep myline`

Это работает хорошо. Скрипт получает «myline» в качестве первого аргумента. Но теперь я хочу добавить "W" в конце этого. Я попытался

bash myscript `cat info | grep myline`w

Это уже проблематично c, скрипт получает "wyline" в качестве первого аргумента.

И теперь следующим шагом является то, что я на самом деле хочу иметь оператор if хочу ли я добавить ш или нет. Пробовал это:

bash myscript `cat info | grep myline``[ "condition" == "condition"] && echo "w"`

Это работает так же. Скрипт получает «wyline» в качестве первого аргумента.

Итак, у меня есть два вопроса: 1) Как исправить результат «wyline», чтобы получить желаемое «mylinew» 2) Есть ли лучший способ написать это, если оператор if после кошка

1 Ответ

0 голосов
/ 07 апреля 2020

Не используйте backticks `, используйте $(...) вместо. bash хакеры устарели, устарел синтаксис

cat file | grep - бесполезное использование cat бесполезное использование кошки наградой . Просто grep file.

Просто процитируйте результат и добавьте w:

myscript "$(grep myline info)w"

Вы можете добавить трейлинг w к последней строке ввода с помощью sed:

myscript "$(grep myline info | sed '$s/$/w/')"

Я бы посоветовал всегда заключать в кавычки ваши расширения переменных.

Скрипт получает "wyline" в качестве первого аргумента.

Ваш входной файл имеет DOS окончания строки. Проверьте вывод с помощью cut -v или hexdump -C или xxd. Используйте dos2unix и удалите символы возврата каретки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...