Shell Script оправдал сбой в Linux по команде

361
Liuwei.Shi

Когда я запускаю команду Linux «at», я обнаруживаю, что скрипт оболочки пользователя выполнен неудачно, например, я пишу следующий код в своем скрипте

 #!/bin/csh #or #!/bin/bash echo "Now will excute a shell script" dir=`pwd` my_path=`/home/Jim` 

Когда я запускаю скрипт в командной строке, он работает нормально.

Пока я запускаю это с помощью команды at, будет показано следующее сообщение

Теперь будет выполняться сценарий оболочки dir = / home / Jim / Desktop: команда не найдена my_path = "/ home / Jim": команда не найдена

Я пробовал много раз, но все еще могу сейчас работать

Поэтому, пожалуйста, кто-нибудь может помочь мне решить эту проблему. Спасибо и С уважением!

0
как вы используете в? Archemar 8 лет назад 1
bash и csh - "! =", действительно ли ваш сценарий вверху? Это скрипт bash или csh? (Одинаковые ли кавычки и обратные кавычки одинаковы в bash и csh?) Xen2050 8 лет назад 0
Я имею в виду, что при использовании #! / Bin / csh или #! / Bin / bash будет отображаться информация об ошибке. Liuwei.Shi 8 лет назад 0

1 ответ на вопрос

1
Zoredache

When you using backticks at the shell or in a script it attempts to execute the contents as if it was a program.

This line is trying to execute the program named /home/Jim, but I believe from what I can get out of your question, this is your home directory, not an executable program. So what you almost certainly need to do is put the /home/Jim in quotes, not backticks (`).

my_path=`/home/Jim` 
Его ошибка показывает, что `/ home / Jim` заключена в двойные кавычки, и кажется, что как бы это ни было` at`, он запускает `dir = / home / Jim / Desktop` и` my_path = "/ home / Jim" `в качестве команд Tom Yan 8 лет назад 0
Посмотри ближе на его ошибку. Это ** Команда не найдена **. Вы не получаете ** команду не найдена ** ошибка при попытке сохранить строку в переменной. К сожалению, форматирование вопросов форматирования OP было немного испорчено, поэтому я не могу сказать это со 100% уверенностью, но мне кажется весьма вероятным, что вместо кавычек у него есть обратные черты. Zoredache 8 лет назад 0
Ты не понял меня. Я имею в виду, что at обрабатывает целые строки как команды, как будто `dir = / home / Jim / Desktop` и` my_path = "/ home / Jim" `являются программами. Tom Yan 8 лет назад 0
О, [at] (http://manpages.debian.org/cgi-bin/man.cgi?query=at&apropos=0&sektion=0&manpath=Debian+8+jessie&format=html&locale=en) - это инструмент, позволяющий запустить Команда в какой-то более поздний момент времени. В основном люди используют вместо этого cron, но `at` по-прежнему установлен по умолчанию на многих дистрибутивах. Я предполагал, что OP просто делал что-то вроде `echo" scriptpath "| в `, но, возможно, нет. Zoredache 8 лет назад 0

Похожие вопросы