2013-11-13 3 views
1

Предполагая, что имя моего сценария myscript.sh и мой текущий каталог /Users/scripts/ Я пытаюсь сделать следующее:кот файл в переменную

localScript=$(cat ./myscript.sh) 

Я получаю следующее сообщение об ошибке:

#!/bin/sh not found 

Я не могу понять, как это сделать, но я полагаю, что он не работает, потому что $() создает подоболочку с другим pwd и, следовательно, не может найти мой файл.

Я также пытался использовать различные комбинации pwd, но у меня также возникли проблемы с этим методом.

+3

Ваша одна строчка здесь прекрасна. Ошибка в другом месте. Вы запускаете localScript = $ (cat ./myscript.sh) в терминале? Из сценария? Вы уверены, что это 'localScript = $ (cat ./myscript.sh)', который выдает эту ошибку? $() будет иметь тот же рабочий каталог, что и ваш запуск. – nos

+0

Запустите 'type cat' и посмотрите, что вы получаете. – anubhava

+0

@nos Я пробовал делать то же самое назначение переменных с терминала, а также включил его в свой скрипт и запускал скрипт с терминала. –

ответ

2

На OSX я сделал следующее:

$ vim test.sh 

и напечатал в следующем:

#!/bin/sh 
localScript=$(cat ./test.sh) 
echo $localScript 

, а затем,

$ chmod +x test.sh 
$ ./test.sh 

, который дает следующий вывод:

#!/bin/sh localScript=$(cat ./test.sh) echo $localScript 

Возможно, вышеуказанное поможет вам определить вашу ошибку.

+0

Не совсем уверен, в чем разница, но спасибо! –

+0

Меня тоже нет, но иногда это просто помогает повторить :-) – jbr

Смежные вопросы