Отказано в доступе при передаче файлов в программу ruby - PullRequest
1 голос
/ 21 сентября 2019

У меня есть программа ruby, которая принимает файлы в качестве входных данных.Я пытаюсь проверить, работает ли эта функция, введя файл в программу, введя

cat file1.txt | ./app.rb

Однако, когда я делаю это, я получаю -bash: ./app.rb: Permission denied Я пытался использовать sudo cat file1.txt | ./app.rb который запрашивает у меня пароль, а затем кажется, что ничего не происходит.

Это прекрасно работает, когда я вместо этого набираю ruby app.rb file1.txt

У кого-нибудь есть какие-нибудь советы, как заставить это работать?

Как указано в комментариях, мне нужночтобы иметь возможность прочитать путь к файлу из стандартного ввода и передать их в качестве параметров:

В моем коде у меня есть это:

def input
    if ARGV.length.positive?
      ARGV
    else
      gets.chomp.split(' ')
    end
  end

Я ожидаю input, чтобы вернуть массив путей к файлам.

1 Ответ

2 голосов
/ 21 сентября 2019

Как упоминалось в комментариях выше, отправка содержимого файла в виде STDIN в программу и передача имени файла в качестве параметра - это две очень разные вещи.

Я не могу сказать, что, если и то, и есть "правильно "или" неправильно ", не зная больше контекста того, чего вы на самом деле пытаетесь достичь, но важно признать разницу.


Теперь настоящая причина ошибки в том, чтоВы пытаетесь выполнить файл ruby ​​напрямую.Вы можете исправить это, запустив ruby вместо имени файла:

cat file1.txt | ruby app.rb

. Это , возможно выполнить файл без записи ruby, но сначала вы должны сделать его исполняемым:

chmod +x app.rb

А также напишите Shebang в верхней части файла, чтобы указать, что он должен выполняться как скрипт ruby, а не как скрипт bash (который используется по умолчанию):

#!/usr/bin/env ruby
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...