2016-09-15 1 views
0

Использование #/бен/БашУ меня есть переменная со списком значений, которые я хотел бы Переберите и значение печати с комментарием

variable 
---------- 
abc123 
abc1245 
abc2390 

Я хотел бы сделать следующее:

for r in "$variable" ; do 
if [ [ "$variable" != ""] ] ; then 
    echo "$r OK" 
    continue 
fi 
done 

Я хотел бы, чтобы вывести значение (то есть каждая строка) с комментарием, «OK», как показано ниже

abc123 OK 
abc1245 OK 
abc2390 OK 

однако, Abov сценарий e это

abc123 
abc1245 
abc2390 OK 

Мысли?

+0

«Продолжить» бессмысленно. Обозначение 'if [[" $ variable "! =" "]]' Ошибочно. Либо вы хотите: 'if [[" $ variable "! =" "]]' Или вы хотите 'if [" $ variable "! =" "]' - в обоих случаях, отделяя пустую строку от ']'. Нечетно повторять итерацию на 'r', а затем проверять' 'переменную $' 'в цикле. Использование переменной '' $ переменной '' в 'for' означает, что цикл повторяется только один раз (именно поэтому вы получаете один OK в конце единственного вывода). Вероятно, вам нужно «для r в переменной $», чтобы значение было разделено на пробел, но будьте осторожны. Если вы запустите 'bash -x script.sh', вы увидите все это. –

+0

Имеет смысл. спасибо, что объяснил – newBasher

ответ

0

почти!

принять цитаты прочь из $variable, в противном случае он рассматривается как одно значение:

for r in $variable ; do 
    if [ "$r" != "" ] ; then 
    echo "$r OK" 
    fi 
done 

(также, ваш if проверял $variable вместо $r каждый раз, и не было лишнего continue.)

здесь более простой способ, хотя:

echo "$variable" | awk '/./{print $0, "OK"}' 

, который печатает каждую непустую строку плюс с OK после.

+0

Удивительный! Спасибо! – newBasher

+0

Если это сработает, пожалуйста, «примите» ответ :) – webb