Як позбутися від команди, яку не знайдено?


0

Я новачок у сценарії оболонки, і в даний час я стикаюся з проблемою, яку я не можу вирішити.

Це помилка:

vmw_ubuntu@vmwubuntu:~$ BookInv
/home/vmw_ubuntu/BookInv: line 155: [=: command not found

Це мій код (простий цикл)

#!/bin/bash
until [$number= "7"];do 
bla bla bla
echo -n "Please enter your option : "
read number
case $number in
7) exit;;
*) echo "Please enter number from 1-7"
esac
done

Мій код все ще працює чудово, тільки що кожен раз моєму циклі перезавантаження, що помилка з'являється, і я не можу знайти рішення для цього.

В основному те, що я хочу, це позбутися помилки "команда не знайдена" щось не так з моїми кодами?

Проблема в тому, що я спробував опустити пробіли і поклав "на мій $ номер однак проблема все ще зберігається.

На коментар про так скаржиться повідомлення про помилку

[=

і визначаючи це означає

number=0

однак, що не вирішує мою проблему, вона все ще показує помилку. У мене є інші коди в ньому тільки деякі функції, але ця проблема була там весь час і, здається, не впливає на функції, як я видалив всі функції і спробував.
Моя програма все ще працює, але продовжуйте надсилати мені це повідомлення про помилку:

vmw_ubuntu@vmwubuntu:~$ BookInv
/home/vmw_ubuntu/BookInv: line 155: [=: command not found

Це until [$number= "7"];do виглядає мені дивно; що станеться, якщо $ number не визначено? Хіба це не стане [= що повідомлення про помилку скаржиться?
MarkU

Відповіді:


2

Оскільки у вашому сценарії немає рядка 155, я припускаю, що він відповідає рядку 2 того, що ви показали нам.

Ви зараз маєте

until [$number = "7"];do

Пробіли важливі в bash, а тест вимагає пробілів у дужках. [ є псевдонімом для test. Так що вам принаймні потрібно мати

until [ $number = " 7" ]; do

Як зараз стоїть, так $number порожній, bash намагається викликати a [= команду. З $number може бути порожнім або містити пробіли, які ви також повинні цитувати, щоб він вважався одним і лише одним аргументом. Лінія повинна бути

until [ "$number" = "7" ]; do

(Цитати близько 7 фактично не потрібні, але вони не можуть заподіяти шкоди)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.