
Я создаю test.sh для чтения файла с содержимым
item1:return1
item2:return2
...
item10:return10
содержимое test.sh
VAR1=$1
VAR2= `grep "^${VAR1}:" /home/path/file | awk '{print $2;}'`
echo "${VAR2}";
запустить тест
sh test.sh item1
возвращаться
: not found test.sh:
: not found test.sh:
Когда я запускаю то же самое на Centos. return
return1
Что не так с командой awk?
решение1
С командой awk все в порядке. Ваша проблема test.sh
не может быть найдена, как показывает сообщение. CentOS, вероятно, устанавливает ваш путь в переменную PATH.
Запустите его как sh ./test.sh item1
(я предполагаю, что test.sh находится в вашем текущем каталоге)
Редактировать: Мне следовало бы уделить больше внимания скрипту, :
проблема в grep. Это работает
VAR1=$1
VAR2=`grep "${VAR1}\:" file | awk '{print $2}'`
echo "${VAR2}";
Однако awk по умолчанию не распознает его :
как разделитель, мне пришлось использовать
item1: return1
item2: return2
Я понятия не имею, как это могло бы работать на сервере или CentOS без этого изменения.