Посмотрел "секретное", часовое видео с обучающих курсов по скриптам bash и не понял практически ничего. Но после просмотра ваших двух видео у меня полностью открылись глаза на скрипты! Спасибо вам огромное!
Если бы только одно " "секретное", часовое видео ", а то их(видео) десятки просмотренных часовых и более видео - у продвинутых ГУРУ....И эффект NULL)))))) А тут 10 мин, все получается с первого раза и в голове полное ОК!)))) Спасибо за ОТЛИЧНЫЕ Уроки!!
Всё оч круто. Но самое главное ждал: как хранить функции в отдельных файлах и юзать их в основном скрипте. Но всё равно спасибо. Хороший подход к изложению. Грац!
Денис, огромное тебе спасибо за курс! Да прибудет с тобой сила!!! Кстати, на 11:22 цикл "for" работает и без `ls *.txt`: #!/bin/bash for myfile in *.txt; do cat $myfile done Зачем ты сделал с ls? Может есть какие то случаи, для которых это нужно? И ещё, на 17:11 ты объявляешь перед функцией глобальную переменную summa=0. Я убрал эту строчку и скрипт всё равно работает. То есть переменные, объявленные внутри функций в Bash всегда являются глобальными? UPD: Кароч нагуглил, шо если нужна локальная переменная в теле функции, то перед именем переменной нужно дописать слово local. Например: local summa= .
Вопрос по переменной summa в функции, мы ее явно не возврящали, но она оказалась видна вне функции, получается что любые переменные фунций не изолированы.. Как то такой подход bash не совсем труе с точки зрения программирования или есть нюанс?
Огромное спасибо за "вводный курс" очень многие пробелы заполнились, но остались-таки пара вопросов. Есть (в качестве образца) рабочий скрипт, который содержит в себе tar файл, распаковывает его во временную папку, пользуется его содержимым и по окончании удаляет его. И более простой вопрос: как с пом. скрипта раскомментировать необходимую строку в конф.файле? Буду очень признателен за ответ(ы).
Добрый день, а вот как можно будет выбрать сразу несколько строк. Допустим взять многострочный комментарий из файла. Что в таком случае нужно будет сделать?
В четвёртой здесь строчке скрипта у меня написано Petya и так всё работает, т.е. выводит Privet Petya. Но это я убрал с Petya кавычки. С кавычками ("Petya") у меня выводится Parameter unknown, sorry, т.е. воспринимает как пятую строчку скрипта (*) echo "Parameter unknown, sorry"). В видео у автора Петя в кавычках и всё равно Privet Petya. Вопрос: у нас по-разному работает из за разницы дистрибутивов (Ubuntu vs CentOS) или из за разных версий bash? case $x in 1) echo “This is one”;; [2-9]) echo “two-nine”;; Petya) echo “Privet $x”;; *) echo “Parameter unknown, sorry” esac
Если я правильно все понял то поидее можно написать скрипт который автоматически запустится если совпадет к примеру служебный параметр по входу учетной записи с определенным ником, или не определенным, а по списку чтоб проверял и искал совпадения как с буквами А_z
А если знаешь питон, можно его вместо баша использовать, или это абсолютно разные по назначению вещи? Просто синтаксис баша, как по мне, так себе, даже return нету.
Скажи, а в Израиле сильно помогает сертификация AWS? Просто я базово знаю Java Spring Hibernatе. Но этого все еще недостаточно уже пол года не могу найти работу. Вот думаю линукс чтуть подучить и AWS может б ты что то посоветовал?
Не могу понять в case если загнать в квадратную скобку 10(вместо 9 как на видео) т. е [1-10]) скрипт игнорирует параметр 10, почему? Извиняюсь заранее за тупой вопрос, учусь.
[ $COUNTER -ln 10] это значит меньше чем 10 -ln -> less than [ $COUNTER -le 10] это значит меньше или равно 10 -le -> less than or equal Вот документация www.tldp.org/LDP/abs/html/comparison-ops.html
Составил следующий скрипт: #!/bin/bash read -p "Enter your Exam points: " x echo "AAAAAAAAND....." case $x in [1-59]) echo "You are NOT pass the Exam";; [60-100]) echo "You are PASS the Exam";; *) echo "Exam points undefined" esac При вводе от 1 до 5 пишет правильный ответ, при вводе 6 пишет, что "You are PASS the Exam", при вводе остальных чисел выдает "Exam points undefined" . Где накосячил? Не могу понять.. Help!
@@ADV-IT попробовал и так, и так, и вместе - результат тот же... даже пробовал задавать иксу определенное значение (х=...), но без толку. Такое ощущение, что он не хочет именно [1-59] и [60-100] корректно читать..
@@paulruru8665 case $x in [1-9]|1[0-9]|[2-5][0-9]) echo "Exam Failed with mark $x";; [6-9][0-9]|100) echo "Exam Passed with mark $x";; *) echo "Exam Mark undefined $x";; esac Главное вовремя)))
Денис, спасибо за урок. В конце видео дан скрипт с результатом экзамена (пасхалочка). Не смог его запустить. Текст был скопирован полностью, но скрипт не запустился. Пытаюсь понять, где ошибка, можешь подсказать?
Привет, можешь подсказать с такой задачей Bash, есть в каталоге /usr/test/ файл test.doc (есть и другие но нужен только он , мне нужно перенести файл в каталог /usr/local/backup/и положить не просто в этот каталог а в такую-же папку где лежал файл , через find нашел файл , а как с него достать название директории, не выходит. Что бы было после переноса /usr/local/backup/test/test.doc
@@ADV-IT find /usr/test/-type f -name "*.tar.bz2" потом найти basename $(dirname /usr/test/test.doc) думал как то так сначало найти все архивы, и через exec найти выполнять задачу, но не вышло
Уроки отличные, как и весь канал Дениса. Огромное спасибо! П.С Странно, что никто не заметил. При вводе Trump в myscript3.sh, вывод должен был быть Hello Trump. Я немного подправил. Кстати он у нас теперь мистер. Ну и Петю приветствуем на чатлано-пацакском языке, что бы было понятно что это из второго аргумента прилетело. #!/bin/bash if [[ $1 == 'Vasya' ]]; then echo "Privet $1" elif [[ $1 == 'Trump' ]]; then echo "Hello mr.$1" else echo "Zdorovo $1" fi read -p "Enter the number:" x echo "Starting CASE selection..." case $x in 1) echo "This is one";; [2-9]) echo "Two-Nine";; 'Petya') echo "Ky $x";; *) echo "Parameter is not defined" esac
Почему при параметре Трамп у вас выдает здарова, вместо хеллоу? Сделал у себя все по видео, выдает как надо при параметре трап выдает привет, при дургом здарова, как так?
Денис, привет! Подскажи пожалуйста как лучше/удобнее/практичнее писать скрипты на linux? С помощью bash или все же python? Где то видел, что из под python можно и параметры передавать и команды линуксовые выполнять. Что лучше в итоге? :) и что ты используешь для автоматизации в рамках DevOps? А вообще есть куча вопросов про DevOps, куда можно написать и поспрашивать (если можно)? Сейчас работаю администратором в одном известном банке России, хочу квалифицироваться в DevOps инженера. Заранее спасибо!
Я пишу и так и так, Python тоже не у всех установлен. Практичнее писать на Python конечно, тоже самое работает на Windows и на Linux. Но Bash тоже штука хорошая. Вот только вчера писал скрипт который копирует AWS ECR Docker Images с одного региона на другой, всё на bash + awsci
#!/bin/bash function one() { echo "Hello from Function-1" } function two() { echo "Hello from Function-2" } one # call function one two # call function two
Там нумерация независима. Ну если ты передаёшь в скрипт 2 параметра var1 и var2 и хочешь чтобы функция внутри скрипта их сложила то функцию надо вызывать примерно так : Myfunction $1 $2 . А внутри функции ничего не меняется
А как в modaXterm отключить дисконнект от сервера при простое терминала? А то пишу скрипт, не сохранил и прога предлагает снова подсоединиться. Или это Амазон делает?
Надеюсь. Главное самому разобраться детально. Тут не школа, когда можно 5 раз объяснить и самому понять. Если что, то это только к этому уроку комментарий.
Люди добрые, подскажите, пожалуйста, что со мной не так?( Вроде переписал код с примера, но у меня почему-то не работает. Буду очень благодарен за помощь! #!/bin/bash x=62 case $x in [1-59]) echo "Exam Failed with mark $x" [60-100]) echo "Exam Passed with mark $x" *) echo "Exam Mark undefined $x" esac Ошибка: ./script.sh: line 5: syntax error near unexpected token `)' ./script.sh: line 5: ` [60-100]) echo "Exam Passed with mark $x"' Попробовал даже добавить ;; после каждого case: #!/bin/bash x=62 case $x in [1-59]) echo "Exam Failed with mark $x";; [60-100]) echo "Exam Passed with mark $x";; *) echo "Exam Mark undefined $x";; esac И тут неожиданный результат: Exam Mark undefined 62 Я что-то ничего не понимаю... Почему такой результат? Должно ведь выводить Exam Passed with mark 62 по идеи и нужно ли добавлять ;; после каждого case или нет? Прошу прощения за такую статью, но я уже который час под ряд не могу понять...
@@ADV-IT А ведь говорили мне мама, чтобы я был гуманитарием... Спасибо большое за ваши труды и помощь! Вы самый лучший преподаватель! Здоровья Вам и всего наилучшего!