dmr
dmr

Reputation: 22403

Cygwin can't find files in shell script

I am running a shell script in Cygwin, and the files in the shell script aren't showing up, even though they are definitely in the same directory as the shell script.

Cygwin command:

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

Shell script (from 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

Upvotes: 4

Views: 1459

Answers (3)

user3761340
user3761340

Reputation: 663

Often this is related to the EOL characters.

Try:

dos2unix generate-combined.sh

Upvotes: 0

whisprin
whisprin

Reputation: 11

In which directory are you when executing this? In the same folder as the script itself?

Can you try this:

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

Upvotes: 1

Marc B
Marc B

Reputation: 360872

You're using backslashes in a unix context - they're going to be treated as escapes.

e.g.

marc@host ~
$ ls c:\users
ls: cannot access c:users: No such file or directory
                    ^---look, mom! No slashes!

marc@host ~
$ ls c:\\users
adm1n    Default User         DefaultAppPool  LocalAdm1n  Public
etc...

So...

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

Upvotes: 0

Related Questions