3

Я пытаюсь запустить скрипт, который находится в каталоге, для которого у меня есть права администратора, но я пытаюсь запустить его из того места, которое не является каталогом .. IE генерирует загрузку в скрипте, который читает все файлы в каталоге и выдает выходные данные на основе этих файлов. Но когда я пытаюсь вызвать его из терминала, он не запускается, если только активный каталог не является каталогом, в котором находится скрипт, это проблема с разрешениями?

Я попытался запустить его таким образом:

sh /path/to/file/FILE
./path/to/file/FILE

но когда я cd в каталог и запускаю

./FILE

все работает нормально.

Разрешения для моей учетной записи:

drwxrwxr-x 5 edennis edennis       4096 Nov 14 14:35 . 

Разрешения для скрипта:

-rwxrwxr-x 1 edennis edennis       3644 Nov 14 11:45 zScript

Права доступа к файлам скрипта:

-rw-rw-r-- 1 edennis edennis   10437424 Oct 15 10:27 document.txt

Содержание сценария:

#!/bin/bash

for file in *.txt

do

echo "this is my favorite file " "$file" >> output.txt;

done

1 ответ1

1

Проблема в том, что вы все еще остаетесь в текущем каталоге, когда запускаете скрипт. Итак, линия

for file in *.txt

развернет глобус (*.txt) на все текстовые файлы в вашем текущем каталоге. Конечно, если ваш текущий каталог (не каталог скрипта!) не имеет текстовых файлов, вы не получите никакого вывода.

Если вы хотите перейти в каталог сценария изнутри сценария (что приведет к работе глобуса *.txt ), посмотрите этот пост переполнения стека: может ли сценарий Bash сказать, в каком каталоге он хранится?


Пока мы на этом - не забывайте правильно указывать "$file" когда вы используете, чтобы имя файла с пробелами не нарушало ваши команды. Это не имеет значения в вашем случае, потому что echo не заботится о аргументах, но это хорошая привычка для развития.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .