Объединить вывод команды с вводом [дубликат]

С bash :

A=10
B=20
C=0
D=1

for var in A B C D; do
    if [ ${!var} -eq 0 ]; then
        echo "$var value is 0"
    else
        echo "Ok"
    fi
done

Используйте -eq для сравнения целочисленных значений (или используйте (($ {! Var} == 0)) или ((! $ {! Var})) , что то же самое), и используйте $ {! Var} , чтобы получить значение переменной, имя которой хранится в переменной var .

Или немного лучше, но по сути то же самое (все еще в bash ):

for var in A B C D E; do
    case ${!var} in
        0) printf '%s value is 0\n' "$var" ;;
        *) echo 'Ok' ;;
    esac
done

Это обрабатывает значения как строки, а не как целые числа.

1
10.01.2017, 14:33
2 ответа

Возможность (я думаю, должны быть лучшие):

echo `echo "Hello world" | wc -c` ",Hello world" | sed 's/ ,/,/g'
0
27.01.2020, 23:46

tee и paste решение:

echo "Hello world" | tee >(wc -c) | tac | paste -s -d, -
12,Hello world
1
27.01.2020, 23:46

Теги

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