2015-09-02 2 views
0

У меня есть простой сценарий оболочки!«Bad интерпретатор» работает скрипт bash на Linux

#!/bin/bash 
echo "Part1" 
ADMIN_1_FILE="/var/www/cm_admin/_scripts/files/admin1.zip" 
echo "Part2" 
if [ $1 ] 
then 
case $1 in 
esac 
    echo "Installing scripts..." 
    cd "/home/$1" 
    mkdir "tmp" 
    chmod 777 "tmp" 
    cp $ADMIN_1_FILE "tmp" 
    cd "tmp" 
    unzip $ADMIN_1_FILE 
    cp * "/home/'$1'/" 
    # modify 
echo "Congratulations" 
echo "Successfully installed and configured script" 
else 
echo "problem" 
fi 

Когда я пытаюсь выполнить его, его говорит: плохой переводчик: Нет такого файла или каталога

У вас есть идея идея, что происходит здесь?

Его первый сценарий, поэтому, пожалуйста, поймите мое дело.

Спасибо за помощь!

Также

+0

файла не существует или разрешений недостаточно. отлаживайте его, чтобы вы знали, какая строка относится к – amdixon

+0

Доступна ли опция '/ bin/bash' (проверьте с помощью' ls -la/bin/bash')? Сценарий оболочки содержит фиды линий DOS (проверьте с помощью 'cat -v NameOfScript')? –

+0

Работает ли 'bash script.sh'? – fjellfly

ответ

1

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

sed -i.bak $'s/\r//' script.sh 

Если это так, то вам нужно взглянуть на то, что вы использовали для создания файла и убедитесь, что он настроен на использование UNIX-стиль line endings вместо DOS-стиле - LF вместо CRLF.

+0

сделал свой новый файл под названием script.sh.bak –

+0

Да, это копия оригинала. Но файл 'script.sh' был изменен. Посмотрите, работает ли это сейчас. –

+0

Спасибо! Решила проблему! :) –

Смежные вопросы