1

эй, я новичок в bash и по какой-то причине я не могу сохранить вывод в переменную

#!/bin/bash
file="~/cs/cs3776/assignment2/passwd1.txt"
while read p; do

        echo "$p" | cut -d: -f1





done < passwd1.txt

меняя эхо на

$a=$(echo "$p" | cut -d: -f1)
echo "$a"

не похоже на работу

1 ответ1

1

Здесь есть две проблемы. То, что вы видите, это то, что вы используете знак доллара для переменной, которую вы назначаете - знак доллара используется для получения значения переменной, а не для ее установки. Таким образом, используйте a=$(echo "$p" | cut -d: -f1) вместо $a=$(echo "$p" | cut -d: -f1) .

Вторая проблема заключается в файле назначения file="~/cs/cs3776/assignment2/passwd1.txt" - ~ необходимо развернуть до пути к вашему домашнему каталогу, но это расширение не происходит, когда оно находится в двойном цитаты. В этом случае нет ничего другого, что могло бы быть расширено, так что просто отключение кавычек (file=~/cs/cs3776/assignment2/passwd1.txt) сработало бы. Если для остальной части строки необходимы кавычки, можно частично заключить в кавычки строку (file=~/"cs/cs3776/assignment2/passwd1.txt").

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .