запуск простого сценария bash с ошибкой синтаксиса: слово неожиданно (ожидается “) ”)

Я пытаюсь установить Anaconda3 в ubuntu14.04 следующим образом:

seyyedhossein@hossein:~$ sh Anaconda3-4.2.0-Linux-x86_64.sh 

, и я получаю:

Anaconda3-4.2.0-Linux-x86_64.sh: 16: Anaconda3-4.2.0-Linux-x86_64.sh: 0: not found
Anaconda3-4.2.0-Linux-x86_64.sh: 61: Anaconda3-4.2.0-Linux-x86_64.sh: 0: not found
Anaconda3-4.2.0-Linux-x86_64.sh: 75: Anaconda3-4.2.0-Linux-x86_64.sh: Syntax error: word unexpected (expecting ")")

в чем проблема? Я установил его на другой аккаунт (который был первоначально загружен с) успешно. но когда я войду в свою новую учетную запись, она просто не будет работать!

Обновление: Выход команды cat:

#!/bin/bash
# Copyright (c) 2012-2016 Continuum Analytics, Inc.
# All rights reserved.
#
# Name: Anaconda3
# Version: 4.2.0
# Packages: 195
# PLAT:  linux-64
# DESCR: 4.1.1-889-g7ce9b7f
# BYTES: 478051940
# LINES: 558
# MD5:   1ee1f5cb1d92a230e59cc5fce0dca5ba

unset LD_LIBRARY_PATH
echo "$0" | grep '\.sh$' >/dev/null
if (( $? )); then
    echo 'Please run using "bash" or "sh", but not "." or "source"' >&2
    return 1
fi

THIS_DIR=$(cd $(dirname $0); pwd)
THIS_FILE=$(basename $0)
THIS_PATH="$THIS_DIR/$THIS_FILE"
PREFIX=$HOME/anaconda3
BATCH=0
FORCE=0

while getopts "bfhp:" x; do
    case "$x" in
        h)
            echo "usage: $0 [options]

Installs Anaconda3 4.2.0

    -b           run install in batch mode (without manual intervention),
                 it is expected the license terms are agreed upon
    -f           no error if install prefix already exists (force)
    -h           print this help message and exit
    -p PREFIX    install prefix, defaults to $PREFIX
"
            exit 2
            ;;
        b)
            BATCH=1
            ;;
        f)
            FORCE=1
            ;;
        p)
            PREFIX="$OPTARG"
            ;;
        ?)
            echo "Error: did not recognize option, please try -h"
            exit 1
            ;;
    esac
done

# verify the size of the installer
wc -c "$THIS_PATH" | grep 478051940 >/dev/null
if (( $? )); then
    echo "ERROR: size of $THIS_FILE should be 478051940 bytes" >&2
    exit 1
fi

if [[ $BATCH == 0 ]] # interactive mode
then
    if [[ `uname -m` != 'x86_64' ]]; then
        echo -n "WARNING:
    Your operating system appears not to be 64-bit, but you are trying to
    install a 64-bit version of Anaconda3.
    Are sure you want to continue the installation? [yes|no]
[no] >>> "
        read ans
        if [[ ($ans != "yes") && ($ans != "Yes") && ($ans != "YES") &&
              ($ans != "y") && ($ans != "Y") ]]
1
задан 29 October 2016 в 21:44

2 ответа

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

Пример: если файл Anaconda3-4.2.0-Linux-x86_64.sh находится на вашем Desktop, вы можете:

cd ~/Desktop
bash Anaconda3-4.2.0-Linux-x86_64.sh

или

bash ~/Desktop/Anaconda3-4.2.0-Linux-x86_64.sh

Если это не решит вашу проблему, отредактируйте свой вопрос, чтобы включить вывод:

[ f3]
1
ответ дан 23 May 2018 в 04:42
  • 1
    Спасибо, но скрипт Anaconda3 находится в домашнем каталоге! но он этого не находит! – Breeze 29 October 2016 в 21:37
  • 2
    После ввода этой команды кошки на терминале появляется много странных символов! – Breeze 29 October 2016 в 21:39
  • 3
    Ах, потому что внутри файла .sh есть двоичный код! Попробуйте следующее: cat Anaconda3-4.2.0-Linux-x86_64.sh | head -n 76 и ls -al Anaconda3-4.2.0-Linux-x86_64.sh – heynnema 29 October 2016 в 21:41
  • 4
    обновил вопрос – Breeze 29 October 2016 в 21:44
  • 5
    Большое спасибо за ваше время, дорогая heynnema, но я использовал bash вместо sh, и все прошло отлично! – Breeze 29 October 2016 в 22:23

Я использовал bash вместо sh, и скрипт работал нормально! кажется, sh не предназначался для использования с этим!

0
ответ дан 23 May 2018 в 04:42

Другие вопросы по тегам:

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