2015-04-24 3 views
-1

Когда вы запускаете эту функцию, у меня пустой экран. Пожалуйста, помогите кому-нибудь?BASH - Как запустить функцию в bash?

#!/bin/bash 
function Test(){ 
    ITEMS=("0" "aaa" "1" "bbb" "2" "ccc") 
    SEL=$(whiptail --menu "$menu" 0 0 0 "${ITEMS[@]}" 3>&1 1>&2 2>&3) 
} 

Test 2>/tmp/error.log 

Спасибо вам, чтобы помочь

+0

@ Матовый whiptail должен показывать консольный виджетный экран. –

+2

Проблема состоит в том, что '2>/tmp/error.log' вы перенаправили диалог whiptail в файл. –

ответ

2
3>&1 1>&2 2>&3 

переадресует файловый дескриптор 3 для дескриптора файла 1 дескриптора файла один в файл с дескриптором 2, и дескриптор файла 2 в файл дескриптора 3

2>/tmp/error.log 

затем перенаправляет дескриптор файла 2 (который fd 1 или stdout был перенаправлен) в файл.

+0

Спасибо. Есть способ исправить это? –

+0

@ing, удалить '2>/tmp/error.log' –

+0

@glenn jackman Вам нужен журнал ошибок;) –

1

Не ответ, но отзыв код: не устанавливать глобальные переменные в функции

function Test { 
    local items=("0" "aaa" "1" "bbb" "2" "ccc") 
    whiptail --menu "$menu" 0 0 0 "${items[@]}" 3>&1 1>&2 2>&3 
} 

sel=$(Test) 
echo $sel 

Кроме того, не используйте UPPERCASEVARNAMES - оставлю для оболочки

0

Использование Test вместо от Test 2>/tmp/error.log

Смежные вопросы