command-line - Довідка сценарію оболонки - Запитай
Спільноти (25) command-line script bash
Довідка сценарію оболонки
Я новачок у написанні скриптів оболонки для Unix і потребує невеликої допомоги. Я не впевнений, чому cURL зараз раптово після запуску скрипту завантажує пошкоджені пакунки, які неможливо встановити, і чому окремо виконують команди в роботі Terminal, але під час сценарію все виходить з ладу
Для cURL це повертається кажучи команди не знайдено Для команди mv сказано не може знайти файл або каталог і, звичайно, монтаж, і все після цього не вдасться.
Не могли б ви звернути увагу на скрипт оболонки, щоб побачити, що відсутнє, або я роблю неправильно?
додано 20 Серпень 2014 при 11:39 Автор gogo
Це не FTP-сервер, якщо URL-адреса починається з http/https.
додано 23 Серпень 2014 при 10:24, Автор chollida, джерело
Додайте set -eux у верхню частину сценарію. Це призведе до його зупинки після невдалої першої команди.
додано 22 Серпень 2014 при 10:56, Автор Martin, джерело
Для cURL повертається, що команда не знайдена
Ви повинні вирішити це першим. cURL виконує дефолт з OS X 10.9 і має бути у вашому PATH , якщо ви не мавпа з вашою змінною середовища PATH . Спробуйте зателефонувати безпосередньо з:
замість цього сценарію. Також:
у терміналі покаже вам повний шлях до команди curl у поточному середовищі.
Опція -O повідомляє curl зберегти вивід у файл у поточному робочому каталозі . Це означає, що якщо ви не вказуєте файл ~/Downloads під час запуску цієї команди, файл не буде збережено в ~/Downloads . Вам слід додати:
line before calling the curl commands or use -o to save the file to a specific location with a specific name.
в абсолютно непотрібних. Виклики curl не повернуться, поки вони повністю не завантажуватимуть файли. Примітка: вони повернуться, якщо не вдасться завантажити файли. Можливо, ви захочете розглянути перевірку ext-кодів викликів curl або для існування файлів після виклику curl, щоб переконатися, що вони працюють правильно. Або подумайте про додавання set -e у верхню частину сценарію, щоб сценарій завершується, якщо будь-яка команда повертає ненульовий код виходу .
Для команди mv неможливо знайти файл або каталог і звичайно монтування, і все після цього не вдалося.
Ваш виклик mv не виконується, оскільки виклики завитку не виконуються і файли не завантажуються, як очікувалося. Виправлення викликів завивки, і ви виправите виклик mv .
додано 20 Серпень 2014 при 11:51 Автор shsteimer
@ Steve я процитував свою посаду в моїй відповіді. Він сказав: "Для CURL це повертається кажучи команди не знайдено".
додано 20 Серпень 2014 при 11:54, Автор shsteimer, джерело
Виправлення mv все одно не допомогло б, якщо він не отримає команду , яка намагається викликати curl зі свого сценарію.
додано 20 Серпень 2014 при 11:57, Автор shsteimer, джерело
Виправлено мій коментар, вибачте, що я написав це неправильно
додано 20 Серпень 2014 при 11:54, Автор T888, джерело
У нього виникла проблема з mv , яка виправила б проблему з curl , коли вона була виправлена. Однак хороший пост!
додано 20 Серпень 2014 при 11:53, Автор T888, джерело
Це має спрацювати. У мене зараз немає часу на пояснення змін/доповнень, але я буду оновлювати. Ви повинні запустити цей сценарій як sudo, щоб він працював.
Ще простіше, sudo chmod + s твору - буде виконуватися як root без необхідності введення пароля.
додано 21 Серпень 2014 при 12:59 Автор linusthe3rd
Це не працює добре у всіх, крім найменших випадках. Файли завантажуються в поточний робочий каталог. Виклики mv припускають фіксоване місцезнаходження завантаження. Судо не повинно бути необхідним. Команди, які потребують підвищених привілей, підкажуть їм, якщо вони потрібні тут. Також: у вас немає перевірки помилок. Що робити, якщо виклики згортаються?
додано 21 Серпень 2014 при 01:52, Автор shsteimer, джерело
Дякуємо за допомогу! Я перебуваю в процесі оновлення сценарію зараз і повторно розміщуватимуться після того, як прийму всі ваші коментарі до гри. @njboot Яка мета рядка ps aux | grep -i TeamViewer | awk {'print $ 2'} | xargs kill ', тому що, коли я запустив її через термінал вручну, він перевернув екран порожнім, і я не міг уникнути цього?
додано 21 Серпень 2014 при 02:36, Автор pmcilreavy, джерело
@gogo Під час монтування зображення та встановлення програмного забезпечення, програми та процесів, пов'язаних із запуском зображення - в результаті, останній крок (розмотування) завершиться невдало, не вдавшись до першого процесу.
додано 21 Серпень 2014 при 07:06, Автор linusthe3rd, джерело
@IanC. Дякуємо за інформацію. Я також змінювався на основі пропозицій Стіва. Відразу ж видалили sudo з скрипта ... швидко зрозуміли, що це було дурно. Додавання умовних виразів у разі невдачі викликів завитку зробить багато сенсу ... тепер вже дуже втомився. Завтра! Дякуємо за ваш відгук. Привітання.
додано 21 Серпень 2014 при 04:52, Автор linusthe3rd, джерело
Дякуємо за інформацію. Чому cd ~/завантаження ? Я не бачу потреби, окрім, можливо, затягування. Зазначені посилання автоматично завантажуються у файл ~/Downloads, без будь-якого коду cd . З повагою.
додано 21 Серпень 2014 при 01:30, Автор linusthe3rd, джерело
Ну, вони/не/завантажують автоматично в цю папку. Вони автоматично завантажуються в ~, принаймні на моєму macbook.
додано 21 Серпень 2014 при 01:33, Автор T888, джерело
Єдине, вам потрібно записати як ~/Завантаження, а також ви можете просто позбутися sleep 30s . Хороший обхідний метод softkill
додано 21 Серпень 2014 при 01:06, Автор T888, джерело
Ваше посилання для завантаження TeamviewerHost повернулося
коли я прочитав файл, я змінив посилання.
додано 20 Серпень 2014 при 11:45 Автор T888
Цей перший виклик curl завантажить файл до каталогу, у якому ви перебуваєте, коли сценарій запущений, а не до ~ як команди mv очікує. Краще cd ~/Завантаження на початку сценарію, щоб ви знаходилися в відомому місці.
додано 20 Серпень 2014 при 11:56, Автор shsteimer, джерело
Також: немає перевірки помилок.
додано 21 Серпень 2014 при 01:53, Автор shsteimer, джерело
Yuuuuup спасибі за те, що ловили
додано 21 Серпень 2014 при 12:05, Автор T888, джерело
Дякуємо за допомогу всім хлопцям. Беручи все під увагу з дивовижних пропозицій завдяки Steve, Ian, orkoden і njboot, це результат сценарію, який працює. Хотілося б, щоб я знав, як застосувати перевірку помилок, яку запропонував Ян, щоб я додав набір -eux.
Мета скрипту - знайти спосіб розгортання TeamViewer 9 через ssh і термінал тихо, без необхідності встановлення стороннього програмного забезпечення, як це передбачено в наступних посиланнях:
os-x/
додано 22 Серпень 2014 при 09:17 Автор pmcilreavy
Спочатку я спробую помістити лапки навколо URL-адрес для curl та інших команд. У скрипті оболонки пунктуація може викликати проблеми.
Також змініть перший рядок на #!/Bin/bash , а не на sh .
додано 20 Серпень 2014 при 11:43 Автор gotorg
/bin/sh - повна оболонка bash . Таким чином, для всіх OS X випущений принаймні. Див. /bin/sh --version , якщо ви сумніваєтеся в цьому. Не потрібно змінювати рядок #! .