У меня нет опыта при записи .sh файлов. Я хочу выполнить pvm2raw утилиту этого приложения из Библиотеки Объема.
Я получаю следующую ошибку при выполнении build.sh в Ubuntu 10.10.
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. Теперь я получаю следующую ошибку:
Как я могу решить эту проблему Неопределенной переменной?
Это похоже на скрипт c-shell. Используйте
sudo apt-get install csh
и попробуйте запустить скрипт в c-shell. Вы можете открыть c-shell, запустив csh из оболочки bash.
Это хорошая форма и уменьшает путаницу, чтобы запустить все сценарии оболочки, объявив оболочку, в которой они должны работать. Первая строка для оболочки 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