2017-07-12 1 views
0

mon script nodejs ne peut pas bien fonctionner au shell msys2quoi de mal sur mon msys2? ne peut pas obtenir dirname à bash

quelque chose worng faire basedir $ toujours devenir vide

que cas ce bug Error: Cannot find module 'C:\msys64\node_modules\gulp\bin\gulp.js'

comment puis-je résoudre ce problème ?


msys2-bug test

#!/bin/sh 
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") 

echo \$0 = $0 

echo 
echo \$\(dirname \"\$\(echo \"\$0\" \| sed -e \'s,\\,/,g\'\)\"\) 
echo 

echo \"$basedir\" should eq $(dirname "$(echo "$0" | sed -e 's,\\,/,g')") 
echo $(echo "$0" | sed -e 's,\\,/,g') 

Affichera

$ msys2-bug-test 
$0 = /c/Users/USER/AppData/Roaming/npm/msys2-bug-test 

$(dirname "$(echo "$0" | sed -e 's,\,/,g')") 

"" should eq . 
/c/Users/USER/AppData/Roaming/npm/msys2-bug-test 

Répondre

0

Remplacer:

basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") 

par:

basedir=$(dirname $(echo "$0" | sed -e 's,\\,/,g')) 

Et:

echo \"$basedir\" should eq $(dirname "$(echo "$0" | sed -e 's,\\,/,g')") 
echo $(echo "$0" | sed -e 's,\\,/,g') 

par:

echo \"$basedir\" should eq $(dirname $(echo "$0" | sed -e 's,\\,/,g')) 
echo $(echo "$0" | sed -e 's,\\,/,g')