Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: [РЕШЕНО] Bash-скрипт. echo "$(ls /media)" | awk '{print $2}'  (Прочитано 1157 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн CitiЯen

  • Автор темы
  • Участник
  • *
  • Сообщений: 138
  • Ubuntu Natty + OB
    • Просмотр профиля
Здравствуйте. Если строка вида: echo "dsfg dsf sdv " | awk '{print $3}', все работает, но echo "$(ls /media)" | awk '{print $2}' отказывается работать. Подскажите пожалуйста ошибку.
« Последнее редактирование: 01 Июля 2011, 20:04:22 от RazrFalcon »

Оффлайн Ashtar

  • Участник
  • *
  • Сообщений: 201
  • КотЭ - компилятор
    • Просмотр профиля
Re: Bash-скрипт. echo "$(ls /media)" | awk '{print $2}'
« Ответ #1 : 01 Июля 2011, 17:47:40 »
зачем тебе echo?

ls сам по себе вроде как выводит в stdout список папок в строку. без посторонних стредств.
ls /media | awk '{print $2}'
Soturi, sankari, viitan kultaisen kantaja.
_______________________________
 Ex nihilo nihil fit.

Оффлайн CitiЯen

  • Автор темы
  • Участник
  • *
  • Сообщений: 138
  • Ubuntu Natty + OB
    • Просмотр профиля
Re: Bash-скрипт. echo "$(ls /media)" | awk '{print $2}'
« Ответ #2 : 01 Июля 2011, 17:53:25 »
echo все таки нужно, ибо целью является выдернуть одну папку из списка. Нашел ошибку, были лишними двойные кавычки, без них все заработало как нужно. echo $(ls /media) | awk '{print $3}'
Пользователь решил продолжить мысль 01 Июля 2011, 18:05:29:
#!/bin/bash

GREEN="33[1;32m"
RED="33[0;31m"
ENDCOLOR="33[0m"

SelectFolder()
{
  echo -e $GREEN"------------------------------------------------------------------------------"$ENDCOLOR
  LST=$(find /media/ -mindepth 1 -maxdepth 1 -type d)
  for i in $LST
  do
    let COUNT=COUNT+1
    echo -e "$RED[$GREEN"$COUNT"$RED]$ENDCOLOR" "$i"
  done

  while true
  do
    echo -e $GREEN"------------------------------------------------------------------------------"$ENDCOLOR
    echo -n "Выбирайте папку: "; read NUMBER
    echo -e $GREEN"------------------------------------------------------------------------------"$ENDCOLOR
    if [[ $NUMBER -le 0 || $NUMBER -gt $COUNT ]]; then
      echo -e $RED"Неверный ввод!"$ENDCOLOR
      else
        FOLDER=$(echo $LST | awk { print $NUMBER })
        break
    fi
  done
}

SelectFolder /media/
echo $FOLDER

Но здесь не могу понять как заставить работать 25 строку.

Пользователь решил продолжить мысль 01 Июля 2011, 18:14:13:
FOLDER=$(echo $LST | awk "{print \$$NUMBER}")Все работает.
« Последнее редактирование: 01 Июля 2011, 18:14:13 от CitiЯen »

 

Страница сгенерирована за 0.015 секунд. Запросов: 20.