2015-01-13 2 views
0

Код ниже не дает никаких выходных данных:назначение вывода переменной с помощью эхо-команды

$echo `cat time` 
19991213100942 
$a=$(echo `cat time`) | echo $a | echo ${a:0:4} 

Пожалуйста скажите, где я делаю ошибку.

+2

Трубы включает суб-оболочки. Труба также бесполезна и неправильна. Бросьте трубку. –

+0

@ user2610, пожалуйста, объясните, чего вы хотите достичь. – chaos

+0

@chaos: Я хочу сохранить вывод эха в переменную и затем разделить эту строку на разные подстроки. – user2610

ответ

1
a=$(echo `cat time`) 

присваивает вывод команды внутри скобок $(...) к переменной $a. Позже в сценарии, вы можете напечатать переменную:

echo $a 

Это печатает: 19991213100942

echo ${a:0:4} 

, который печатает: 1999

Вы можете ссылаться на varibale по имени $a.

+0

Я хочу знать, почему командная строка не работает в целом: a = $ (echo 'cat time') | echo $ a | echo $ {a: 0: 4}. Это не дает выхода. – user2610

+1

Вы должны использовать точки с запятой, бот-трубы: 'a = $ (время эха-кота); echo $ a; echo $ {a: 0: 4} ' – chaos

1

Во-первых, вам не нужно echo выход cat time: только cat time.

второй, как @Etan говорит (вид), заменить трубы с запятой или новой строкой

a=$(< time) # a bash builtin, equivalent to but faster than: a=$(cat time) 
echo $a 
echo ${a:0:4} 
Смежные вопросы