я сделал этот скрипт здесь и получил ошибку
IA-exporto.sh: 13: wget: не найдено
Я пытался изменить "на` и смешал все вместе и переставил, но это просто не годится ... "
#!/bin/bash
UNAME="maximilian"
PWD="password"
DATE=`date +%Y\-%m\-%d`
DAY=`date +%d`
MONTH=`date +%m`
YEAR=`date +%Y`
PATH="/root/test/IA"
URL="http://www.my-corpo.com/_backend/index.php?date=$YEAR-$MONTH-$DAY&view=csv"
COMMAND="wget --user=$UNAME --password=$PWD $URL -O $PATH-$DATE.csv"
$COMMAND
я даже пытался установить до и после каждой переменной a ", так что похоже
COMMAND="wget --user="$UNAME" --password="$PWD" "$URL" -O "$PATH"-"$DATE".csv"
но когда я echo $ COMMAND это выглядит очень правильно, на самом деле, когда я копирую и вставляю его, он работает ..
Вы отменяете $PATH
переменная, которая определяет, в каких каталогах выполняется поиск исполняемых файлов (например, wget
):
PATH="/root/test/IA"
Так что оболочка только смотрит в /root/test/IA
для wget
команда. Измените имя переменной на другое.
Обычно хорошей практикой считается использование полные пути в скриптах, чтобы не зависеть от предустановленных путей поиска.
which wget
сообщит вам путь к wget (возможно /usr/bin/wget
)COMMAND="wget --user...."
к COMMAND="/usr/bin/wget --user...."
(или где бы ни находился ваш wget)Вы, наверное, захотите:
PATH=/root/test/IA:$PATH
вместо того
PATH=/root/test/IA
Чтобы сохранить текущую переменную PATH, но дать исполняемым файлам в / root / test / IA предпочтение по сравнению с другими исполняемыми файлами с похожими именами в текущем PATH.
Обычно считается плохая практика использовать полные пути к исполняемым файлам (т.е.не использовать концепцию PATH) в сценариях, потому что это нарушает переносимость сценариев и, что более важно, не позволяет вам заменять исполняемые файлы по умолчанию для дистрибутива своими собственными. Например, большинство дистрибутивов устанавливают wget в / usr / bin. Если вы хотите установить другую версию wget в / usr / local / bin или ~ / .bin, не удаляя wget по умолчанию для дистрибутива, но используя свой собственный wget в сценарии, вам следует установить PATH = $ HOME / bin: / usr / local / bin: $ ПУТЬ. Использование PATH является важной функцией, если вы занимаетесь кросс-платформенной разработкой. В этой ситуации у вас может быть установлено пять различных наборов инструментов gcc. Вам не нужно иметь пять разных версий сценария компиляции, поэтому вы полагаетесь на использование оболочкой PATH для выбора правильного набора инструментов.
Обратите внимание: если вы собираетесь запускать этот скрипт из crontab, вам, возможно, придется явно добавить каталоги в переменную PATH, потому что по умолчанию Cron PATH включает всего несколько каталогов, так как Грегсет объясняет.