Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: sunhater в Jun 08, 2004, 18:07



Титла: Bash shell scripting
Публикувано от: sunhater в Jun 08, 2004, 18:07
Използвам следната функция за вход на данни от потребителя:
Примерен код
function get_input() {
    local output
    read -ep "${1} " output
    echo "${output}"
}

Извиква се по следния начин:
Примерен код
pass="$(get_input "Your password: ")"

Как мога да я модифицирам така, че да не се показва въведената информация (за пароли).


Титла: Bash shell scripting
Публикувано от: Йордан в Jun 08, 2004, 18:26
ще ти кажа как го права на С++
значи взимам данните с getchar()
а след него слагам cout<<"\b";
\б изтрива по един синвол след въвейдането на един от клавиатурата
а след тва слагам един ИФ който следи... за "\н" демек кога имаме нов ред а самата парола я взимам парам = парам + новото от getchar()
... надявам се су фанал същноста но при Басх схелл скриптинг не знам как ще стане


Титла: Bash shell scripting
Публикувано от: CaBA в Jun 08, 2004, 18:44
ти пак си минал границата на възможностите на bash. По-лесно е да го направиш на perl:
Примерен код
use Term::ReadKey;
sub read_password{
    ReadMode('noecho');
    my $password = ReadLine(0);
    chomp($password);
    ReadMode('normal');
    print "\n";
    return $password;
}


Титла: Bash shell scripting
Публикувано от: sunhater в Jun 08, 2004, 19:41
Не върви да пренаписвам цял скрипт заради едно дребно нещо. Не може да не става с Bash шела! Други предложения?


Титла: Bash shell scripting
Публикувано от: Йордан в Jun 08, 2004, 19:44
виж дали има \b


Титла: Bash shell scripting
Публикувано от: sunhater в Jun 08, 2004, 19:58
Разбрах как става:
Примерен код
function get_input() {
    local output
    read -sep "${1} " output
    echo "${output}"
}

Опция -s - silent.


Титла: Bash shell scripting
Публикувано от: kostadinz в Jun 08, 2004, 20:15
може и за по гъзарско с kdialog  ;)


Титла: Bash shell scripting
Публикувано от: sunhater в Jun 11, 2004, 15:12
Ще карам направо. В мрежата има компютър с шерната папка //COMPUTER/MP3/Stereo MC's. Как мога да я дир-на със 1 ред използвайки smbclient. Проблема е '-ката.


Титла: Bash shell scripting
Публикувано от: Йордан в Jun 11, 2004, 16:02
ами обикновенно в езиците се ползва "\" за елиминиране на специални знаци ... пробва ли ?


Титла: Bash shell scripting
Публикувано от: sunhater в Jun 11, 2004, 16:22
Това беше първото нещо, което се сетих, ама не става мамка му... Example:

smbclient //COMPUTER/MP3 -I 192.168.0.5 -U nobody% -c "dir \"Stereo MC\'s/*\""


Титла: Bash shell scripting
Публикувано от: sunhater в Jun 11, 2004, 16:37
Реших проблема чрез запазване в променлива:

dir="\"Stereo MC's/*\""; smbclient //COMPUTER/MP3 -I 192.168.0.5 -U nobody% -c "dir ${dir}"