а как там присоединиться
Там задай вопрос.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.
Настоятельно просим вас при общении соблюдать Правила форума и законы РФ. Наша тематика вне политики, поэтому воздержитесь от обсуждения ситуации на Украине и связанных с ней событий, независимо от того, какую сторону вы поддерживаете.
Также напоминаем, что наш форум находится в доменной зоне .ru, физически расположен на российских серверах и мы соблюдаем действующее законодательство России. Любые сообщения о политике будут удаляться.
Linux Forum → Программирование → Помогите разобраться с заданием
Чтобы отправить ответ, вы должны войти или зарегистрироваться
а как там присоединиться
Там задай вопрос.
Блин ну пожалуйста, помогите с массивом, объясните тогда уж, как они вообще пишется общий синтаксис, все что я читал про массивы, там были массивы с заранее введенными в них словами, а как вводить слова в массив и выводить из него??????????????
http://www.opennet.ru/docs/RUS/bash_scr … 12790.html
Это я уже все читал на этом же сайте, только что-то не пойму как вводить в массив свое, там уже готовые массивы, заполненные.
Это я уже все читал на этом же сайте, только что-то не пойму как вводить в массив свое, там уже готовые массивы, заполненные.
как ты читаешь интересно , инновационно , а это интересно как тогда понимать :
Пример 25-3. Некоторые специфичные особенности массивов #!/bin/bash declare -a colors # Допускается объявление массива без указания его размера. echo "Введите ваши любимые цвета (разделяя их пробелами)." read -a colors # Введите хотя бы 3 цвета для демонстрации некоторых свойств массивов. # Специфический ключ команды 'read', #+ позволяющий вводить несколько элементов массива. echo element_count=${#colors[@]} # Получение количества элементов в массиве. # element_count=${#colors[*]} -- дает тот же результат. # # Переменная "@" позволяет "разбивать" строку в кавычках на отдельные слова #+ (выделяются слова, разделенные пробелами). index=0 while [ "$index" -lt "$element_count" ] do # Список всех элементов в массиве. echo ${colors[$index]} let "index = $index + 1" done # Каждый элемент массива выводится в отдельной строке. # Если этого не требуется, то используйте echo -n "${colors[$index]} " # # Эквивалентный цикл "for": # for i in "${colors[@]}" # do # echo "$i" # done # (Спасибо S.C.) echo # Еще один, более элегантный, способ вывода списка всех элементов массива. echo ${colors[@]} # ${colors[*]} дает тот же результат. echo # Команда "unset" удаляет элементы из массива, или даже массив целиком. unset colors[1] # Удаление 2-го элемента массива. # Тот же эффект дает команда colors[1]= echo ${colors[@]} # Список всех элементов массива -- 2-й элемент отсутствует. unset colors # Удаление всего массива. # Тот же эффект имеют команды unset colors[*] #+ и unset colors[@]. echo; echo -n "Массив цветов опустошен." echo ${colors[@]} # Список элементов массива пуст. exit 0 Как видно из предыдущего примера, обращение к ${array_name[@]} или ${array_name[*]} относится ко всем элементам массива. Чтобы получить количество элементов массива, можно обратиться к ${#array_name[@]} или к ${#array_name[*]}. ${#array_name} -- это длина (количество символов) первого элемента массива, т.е. ${array_name[0]}. Пример 25-4. Пустые массивы и пустые элементы #!/bin/bash # empty-array.sh # Выражаю свою благодарность Stephane Chazelas за этот пример, #+ и Michael Zick за его доработку. # Пустой массив -- это не то же самое, что массив с пустыми элементами. array0=( первый второй третий ) array1=( '' ) # "array1" имеет один пустой элемент. array2=( ) # Массив "array2" не имеет ни одного элемента, т.е. пуст. echo ListArray() { echo echo "Элементы массива array0: ${array0[@]}" echo "Элементы массива array1: ${array1[@]}" echo "Элементы массива array2: ${array2[@]}" echo echo "Длина первого элемента массива array0 = ${#array0}" echo "Длина первого элемента массива array1 = ${#array1}" echo "Длина первого элемента массива array2 = ${#array2}" echo echo "Число элементов в массиве array0 = ${#array0[*]}" # 3 echo "Число элементов в массиве array1 = ${#array1[*]}" # 1 (сюрприз!) echo "Число элементов в массиве array2 = ${#array2[*]}" # 0 } # =================================================================== ListArray # Попробуем добавить новые элементы в массивы # Добавление новых элементов в массивы. array0=( "${array0[@]}" "новый1" ) array1=( "${array1[@]}" "новый1" ) array2=( "${array2[@]}" "новый1" ) ListArray # или array0[${#array0[*]}]="новый2" array1[${#array1[*]}]="новый2" array2[${#array2[*]}]="новый2" ListArray # Теперь представим каждый массив как 'стек' ('stack') # Команды выше, можно считать командами 'push' -- добавление нового значения на вершину стека # 'Глубина' стека: height=${#array2[@]} echo echo "Глубина стека array2 = $height" # Команда 'pop' -- выталкивание элемента стека, находящегося на вершине: unset array2[${#array2[@]}-1] # Индексация массивов начинается с нуля height=${#array2[@]} echo echo "POP" echo "Глубина стека array2, после выталкивания = $height" ListArray # Вывести только 2-й и 3-й элементы массива array0 from=1 # Индексация массивов начинается с нуля to=2 # declare -a array3=( ${array0[@]:1:2} ) echo echo "Элементы массива array3: ${array3[@]}" # Замена элементов по шаблону declare -a array4=( ${array0[@]/второй/2-й} ) echo echo "Элементы массива array4: ${array4[@]}" # Замена строк по шаблону declare -a array5=( ${array0[@]//новый?/старый} ) echo echo "Элементы массива array5: ${array5[@]}" # Надо лишь привыкнуть к такой записи... declare -a array6=( ${array0[@]#*новый} ) echo # Это может вас несколько удивить echo "Элементы массива array6: ${array6[@]}" declare -a array7=( ${array0[@]#новый1} ) echo # Теперь это вас уже не должно удивлять echo "Элементы массива array7: ${array7[@]}" # Выглядить очень похоже на предыдущий вариант... declare -a array8=( ${array0[@]/новый1/} ) echo echo "Элементы массива array8: ${array8[@]}" # Итак, что вы можете сказать обо всем этом? # Строковые операции выполняются последовательно, над каждым элементом #+ в массиве var[@]. # Таким образом, BASH поддерживает векторные операции # Если в результате операции получается пустая строка, то #+ элемент массива "исчезает". # Вопрос: это относится к строкам в "строгих" или "мягких" кавычках? zap='новый*' declare -a array9=( ${array0[@]/$zap/} ) echo echo "Элементы массива array9: ${array9[@]}" # "...А с платформы говорят: "Это город Ленинград!"..." declare -a array10=( ${array0[@]#$zap} ) echo echo "Элементы массива array10: ${array10[@]}" # Сравните массивы array7 и array10 # Сравните массивы array8 и array9 # Ответ: в "мягких" кавычках. exit 0
для талантливых объясни своими словами .
спасибо вам огромнейшее, буду разбираться...
read -a colors
на эту строку ругается и дальше не идет,
3: declare: not found
Введите ваши любимые цвета (разделяя их пробелами).
read: 8: Illegal option -a
Student_novi4ok, а запускаешь точно башем?
bash <файло>
а то иногда
sh <файло>
а это разные вещи
ну как я пишу, допустим sh lol.sh
а надо bash lo.sh?
а надо bash lo.sh?
Да, я же сказал, bash и sh разные.
Также если делаешь исполняемым файло, то
#!/bin/bash или #!/bin/sh#!/bin/bash или #!/bin/sh
всегда пишу первое
а на счет прав доступа знаю, без них не запустится)
все получилось, огромное всем спасибо за помощь, не мытьем, так катаньем, но главное результат, зато я понял, что это не мое, верстать сайт на php и html намного проще)
на вкус и цвет товарища нет)
еще раз выражаю всем благодарность!
остался только один вопрос, конечно от него ничего не зависит в скрипте, но все же для себя чисто знать хочется, ввод идет на другой строке от запроса на ввод, можно ли как-то сделать чтобы все было на одной строке: запрос и ввод???
Да и комбинации
можно свернуть до
еще раз спасибо
припозднился я немного... так понял, уже решено/не актуально?
Ребят, помогите, пожалуйста
Напишите на C программу, которая выдает в формате ls информацию о содержимом всех директорий, содержащихся в пути от корневого каталога до текущего местоположения программы, либо в пути, указанном в командной строке (если он задан).
спс
Это даже не смешно..... 
Если в гугле вести "си список файлов". Выдаст кучу решений этого вопроса.
В помощь могу дать цитату (из статьи доступной в первых ссылках с гугла и в которой есть годный исходник), которая даст пищу к размышлению:
dirent.h is the header in the C POSIX library for the C programming language that contains constructs that facilitate directory traversing. The function is not part of the C standard, but is considered "pseudo-standard" and is usually portable between platforms.
Напишите на C программу, которая выдает в формате ls информацию о содержимом всех директорий, содержащихся в пути от корневого каталога до текущего местоположения программы, либо в пути, указанном в командной строке (если он задан).
500 руб.
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Linux Forum → Программирование → Помогите разобраться с заданием
Форум работает на PunBB, при поддержке Informer Technologies, Inc