Проблема с .sh файлом

У меня нет опыта при записи .sh файлов. Я хочу выполнить pvm2raw утилиту этого приложения из Библиотеки Объема.

Я получаю следующую ошибку при выполнении build.sh в Ubuntu 10.10.

enter image description here

build.sh следующие: # делают набор команд mmfile=V3Makefile, набор делают =, "делают-f $mmfile"

set rule=$1
if ($rule == "") set rule="all" // line 16

if ($rule == "deps") then
   if ($HOSTTYPE == "iris4d") $make MAKEDEPEND="CC -M" OPTS="-DHAVE_CONFIG_H -DVIEWER_HAVE_DCMTK" TARGET=IRIX depend
   if ($HOSTTYPE == "i386") $make MAKEDEPEND="c++ -M -I/usr/X11R6/include" OPTS="-DHAVE_CONFIG_H -DVIEWER_HAVE_DCMTK" TARGET=LINUX depend

Что случилось там?

Править: Я последовал совету kniwor и установил csh. Теперь я получаю следующую ошибку:

enter image description here

Как я могу решить эту проблему Неопределенной переменной?

0
задан 11 February 2012 в 10:23

2 ответа

Это похоже на скрипт c-shell. Используйте

sudo apt-get install csh

и попробуйте запустить скрипт в c-shell. Вы можете открыть c-shell, запустив csh из оболочки bash.

0
ответ дан 11 February 2012 в 10:23

Это хорошая форма и уменьшает путаницу, чтобы запустить все сценарии оболочки, объявив оболочку, в которой они должны работать. Первая строка для оболочки Borne (которую вы назвали «.sh») - это «#!/bin/sh». Это помогает устранить путаницу в том, какая оболочка имеет свои нюансы в синтаксисе и структуре команд.

Для оболочки Borne команда if выглядит примерно так: if [$ rule = "deps"]; затем # process, основанный на HOSTTYPE fi

Несколько других предложений, они могут и не быть проблемой, но могут укусить вас со временем.

1- определить согласованное соглашение о присвоении имен переменным, как и все прописные буквы, чтобы вы могли легче читать код и идентифицировать переменные. 2- Используйте фигурные скобки для ссылки на переменные, чтобы они не могли запутаться. 3. При сравнении строк ставьте свои переменные также в кавычки.

Итак, давайте изменим первую строку с

if ($rule == "") set rule="all"

на

if [ "${rule}XXX" = "XXX" ]; rule="all"

Фигурные скобки защищают путаницу с XXX, этот синтаксис говорит о значении переменной "rule" с добавлением «XXX» до конца. Так что если результат только XXX, то вы знаете, что переменная была пустой или нулевой.

Для типа хоста вы можете попробовать добавить еще одну строку, как у вас для правила:

set HOSTTYPE=$2

, а затем, когда вы запускаете скрипт, добавьте второй параметр, где вы вводите тип хоста, например, build.sh deps i386

0
ответ дан 11 February 2012 в 10:23

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

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