У меня есть этот простой сценарий:
#!/bin/bash
echo ${HADOOP_HOME}
$(hadoop fs -ls)
Вывод:
/opt/hadoop-0.20.2-cdh3u2
./hello.sh: line 3: Found: command not found
Таким образом, удар определенно видит HADOOP_HOME. Я установил его в ~/.profile и введенном тракте к папке мусорного ведра:
export HADOOP_HOME="/opt/hadoop-0.20.2-cdh3u2"
export PATH=$PATH:$HADOOP_HOME/bin
Если я просто вызываю команду в консоли, все работает, но в сценарии она не делает. Что я делаю неправильно?
Это не проблема с echo ${HADOOP_HOME}
команда. Тот, который вызывает ошибку, $(hadoop fs -ls)
, необходимо дать 3-ю строку в том сценарии как echo $(hadoop fs -ls)
. Таким образом, сценарий будет похож,
#!/bin/bash
echo ${HADOOP_HOME}
echo $(hadoop fs -ls)
, Если Вы будете давать команду как это $(hadoop fs -ls)
, будете колотить, анализирует его, и найдите, что это - значение. И основанное значение снова анализируется ударом.
Пример:
$ var=4
$ $var
4: command not found
$ echo $var
4
IMO, значение или вывод команды hadoop fs -ls
Found
, эта найденная строка была снова проанализирована ударом при предоставлении команды как это $(hadoop fs -ls)
. Так, чтобы ниже сообщения об ошибке, отображенного при выполнении сценария hello.sh
,
./hello.sh: line 3: Found: command not found