2014-08-25 2 views
3

Я запускаю сценарий оболочки в Cygwin, и файлы в сценарии оболочки не отображаются, хотя они определенно находятся в том же каталоге, что и скрипт оболочки.Cygwin не может найти файлы в сценарии оболочки

Cygwin Команда:

$ bash `cygpath --unix "C:\Users\myName\Documents\projectFile\dygraphsMaster\generate-combined.sh"` 

Shell скрипт (из dygraphs.com):

#!/bin/bash 
# Generates a single JS file that's easier to include. 

GetSources() { 
    # This list needs to be kept in sync w/ the one in dygraph-dev.js 
    # and the one in jsTestDriver.conf. Order matters, except for the plugins. 
    for F in \ 
    dashed-canvas.js \ 
    dygraph-options.js \ 
    dygraph-layout.js \ 
    dygraph-canvas.js \ 
    dygraph.js \ 
    dygraph-utils.js \ 
    dygraph-gviz.js \ 
    dygraph-interaction-model.js \ 
    dygraph-tickers.js \ 
    dygraph-plugin-base.js \ 
    plugins/*.js \ 
    dygraph-plugin-install.js \ 
    datahandler/datahandler.js \ 
    datahandler/default.js \ 
    datahandler/default-fractions.js \ 
    datahandler/bars.js \ 
    datahandler/bars-custom.js \ 
    datahandler/bars-error.js \ 
    datahandler/bars-fractions.js 
    do 
     echo "$F" 
    done 
} 

# Pack all the JS together. 
CatSources() { 
    GetSources \ 
    | xargs cat \ 
    | perl -ne 'print unless m,REMOVE_FOR_COMBINED,..m,/REMOVE_FOR_COMBINED,' 
} 

Copyright() { 
    echo '/*! @license Copyright 2014 Dan Vanderkam ([email protected]) MIT-licensed (http://opensource.org/licenses/MIT) */' 
} 

CatCompressed() { 
    Copyright 
    CatSources \ 
    | grep -v '"use strict";' \ 
    | node_modules/uglify-js/bin/uglifyjs -c warnings=false -m 
} 

ACTION="${1:-update}" 
case "$ACTION" in 
ls) 
    GetSources 
    ;; 
cat) 
    Copyright 
    CatSources 
    ;; 
compress*|cat_compress*) 
    CatCompressed 
    ;; 
update) 
    CatCompressed > dygraph-combined.js 
    chmod a+r dygraph-combined.js 
    ;; 
*) 
    echo >&2 "Unknown action '$ACTION'" 
    exit 1 
    ;; 
esac 

ответ

0

Вы используете слеш контексте Unix - они будут рассматриваться как побеги.

например.

[email protected] ~ 
$ ls c:\users 
ls: cannot access c:users: No such file or directory 
        ^---look, mom! No slashes! 

[email protected] ~ 
$ ls c:\\users 
adm1n Default User   DefaultAppPool LocalAdm1n Public 
etc... 

Итак ...

$ bash `cygpath --unix "C:\\Users\\myName\\etc... 
+0

Я уверен, что сценарий оболочки runs- он просто не находит различные JavaScript файлы, которые он должен. – dmr

+0

Чтобы быть уверенным, я попробовал удвоить \. Не помогло. – dmr

+0

, вероятно, путь. Вы будете запускать это в каталоге 'X', в то время как ваш скрипт отключен в'/a/b/c/d/e/f/g/'-land где-то. 'cat dashed-canvas.js' ничего не будет делать, если файл не находится в том же каталоге, что и CWD скрипта оболочки. –

1

В каком каталоге будут вам при выполнении этого? В той же папке, что и сам скрипт?

Вы можете попробовать это:

cd /cygdrive/c/Users/myName/Documents/projectFile/dygraphsMaster/ 
./generate-combined.sh 
+0

Я попробовал. Сначала изменился текущий каталог. Когда я снова запускал './generate-combined.sh ', я получил список файлов в каталоге, а затем ошибку«/usr/bin/env: node: Нет такого файла или каталога xargs: cat: завершено signal 13 " – dmr

+0

Это означает, что файлы сценариев можно найти. Поэтому этот конкретный вопрос решается. Перед тем, как выполнить сценарий оболочки, вы оказались в неправильном каталоге. Он ищет в текущем рабочем каталоге, не обязательно в каталоге, где он находится. – Robert

+0

@dmr Cygwin не может найти узел. Вам нужно заменить «/ usr/bin/env node» в сценарии оболочки правильным путем к узлу вашей системы. – Robert

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