bash, пока цикл не печатает то, что ожидается

найдите строку в вашей оболочке, похожую на

mysql -u<username> -p<some_password> -hlocalhost -D<database_name> 

, и измените на

export MYSQL_PWD=<some_password> ; mysql -u<username> -hlocalhost -D<database_name> 

, это устранит источник предупреждения.

0
20.05.2017, 21:06
3 ответа
while IFS=":" read z x; do 
  echo $x; 
done<test.txt

или

sed "s/^.*://g" test.txt
0
28.01.2020, 02:16

Мне удалось исправить ваш код, добавив echo. Причина этого описана здесь, вопрос, почему он печатает два других значения.

while read line;
do
        echo "$line" | awk -F":" '{print $2}'
done < test.txt
0
28.01.2020, 02:16

Вам не нужен этот цикл:

$ awk -F ':' '{ print $2 }' test.txt
21
25
27

awk будет обрабатывать ввод построчно.


В вашем цикле чтение получит первую строку файла, которая будет потеряна, поскольку она не используется/не выводится. Затем awk примет стандартный ввод цикла и прочитает две другие строки в файле (поэтому цикл будет выполнять только одну итерацию).

Ваш цикл, аннотированный:

while read line                # first line read ($line never used)
do
    awk -F ':' '{ print $2 }'  # reads from standard input, which will
                               # contain the rest of the test.txt file
done <test.txt
5
28.01.2020, 02:16

Теги

Похожие вопросы