![Скрипты Bash — почему echo не выполняется?](https://rvso.com/image/109217/%D0%A1%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D1%8B%20Bash%20%E2%80%94%20%D0%BF%D0%BE%D1%87%D0%B5%D0%BC%D1%83%20echo%20%D0%BD%D0%B5%20%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D1%8F%D0%B5%D1%82%D1%81%D1%8F%3F.png)
Я попытался создать bash-скрипт.
vi hello_world
Внутри сценария, который я написал
#!/bin/bash
text="Hello World"
echo $text
Когда я печатаю
echo $hello_world
Разве скрипт не должен запускаться, а затем я печатаю "Hello World"? Или что-то не так в синтаксисе?
решение1
Вы используете неправильный синтаксис для вызова скрипта.
echo $hello_world
выводит содержимое переменной hello_world
.
Для выполнения скрипта оболочки вам необходимо ввести путь к скрипту hello_world
:
./hello_world
Выполняется hello_world
, если находится в текущем рабочем каталоге.
Чтобы запустить скрипт напрямую (т.е. с помощью ./script
), вам нужно сделать его исполняемым. Вы можете сделать это с помощью:
chmod +x ./hello_world
или с помощью диалогового окна свойств файла вашего файлового менеджера.
решение2
Предполагая, что скрипт находится в вашем текущем рабочем каталоге, для его выполнения вам потребуется выполнить следующую команду.
./hello_world
Если у вашего скрипта еще нет разрешений на выполнение, вы можете сделать это с помощьюchmod +x hello_world
решение3
Возможно, местоположение bash
отличается.
Вместо этого вы можете использовать bootstrap.
#!/usr/bin/env bash
text="Hello World"
echo $text
EDIT: Это было настолько очевидно, что я не увидел неправильного синтаксиса для запуска скрипта. Попробуйте:
./hello_world