Назад | Перейти на главную страницу

ошибка при выполнении сценария bash -> команда не найдена

я сделал этот скрипт здесь и получил ошибку

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 команда. Измените имя переменной на другое.

Обычно хорошей практикой считается использование полные пути в скриптах, чтобы не зависеть от предустановленных путей поиска.

  1. which wget сообщит вам путь к wget (возможно /usr/bin/wget)
  2. ты меняешь 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 включает всего несколько каталогов, так как Грегсет объясняет.