Я пытаюсь получить сценарий оболочки (bash), работающий на компьютере Mac OS X 10.12.5, используя встроенную версию Bash (3.2), которая поставляется с OS X 10.12 через приложение Terminal.
Я предполагаю, что здесь есть синтаксическая проблема, но я до сих пор не смог заставить одну из команд выполнить так, как ожидалось. Каждый раз, когда команда вызывается, она просто выводит команду в оболочку, но не выполняет ее.
Другая существующая в сценарии команда выполняется без проблем, поэтому я предполагаю, что эта проблема как-то связана с используемыми там одинарными кавычками / двойными кавычками / скобками.
Сценарий был взят из учебного пособия, которому я следовал, чтобы изучать сценарии Bash, поэтому я считаю, что это будет хорошо работать на оболочке Linux Bash, но я не пытаюсь использовать это через Linux.
Сценарий выглядит так ..
#!/bin/bash
dbname="testdb"
table_layout="(id int not null auto_increment, primary key(id), name varchar(255), description text)"
action=$1
list_name=$2
name=$3
id=$3
desc=$4
if [[ $# -lt 1 ]]
then
echo "******************************"
echo "Task Application from tutorial"
echo "******************************"
echo ""
echo "Usage:"
echo "task (new-list)|del-list|add|del|ls)"
echo "new-list: Create a new list"
echo "del-list: Delete a list and all tasks inside the list"
echo "add: task add list_name task_name task_description - creates a new task"
echo "del: task del list_name task_id deletes a working task"
echo "ls: task ls - lists tasks, task ls list_name, lists tasks in a list"
echo ""
echo ""
fi
function create_list {
echo create table $list_name$table_layout | mysql $dbname
}
function add_task {
echo 'insert into "${list_name}" (name, description) values ("${name}","${desc}") | mysql $dbname'
}
Но команда, с которой у меня возникла проблема, это .. (добавить команду задачи)
echo 'insert into "${list_name}" (name, description) values ("${name}","${desc}") | mysql $dbname'
Я также пытался использовать приведенную выше строку следующим образом:
echo `insert into "${list_name}" (name, description) values ("${name}","${desc}") | mysql $dbname`
и ...
echo `insert into `${list_name}` (name, description) values ("`${name}`","`${desc}`") | mysql $dbname`
а также ...
echo 'insert into '${list_name}' (name, description) values ("'${name}'","'${desc}'") | mysql $dbname'
(... Последний соответствует тому, что было включено в оригинальный урок)
Я также установил Bash 4.4 через Homebrew, но результаты были такими же.
Буду признателен за любой совет!