2014-09-24 110 views
0

你看,我有這個劇本,它發現,腳本內的「路徑」,並啓動其他腳本調用「.Iniciar」bash腳本中的路徑找到腳本並啓動另一個腳本

#!/bin/sh 

# La Funcion de este Script es encontrar el directorio 
# Real donde se encuentra el programa 

# La Version Original es de : 
# 17 de Febrero del 2000 - Sam Lantinga, Loki Entertainment Software 

# Esta Version Ha sido Traducida por 
# Inukaze De Venezuela 
# Sitio : http://inukaze.wordpress.com 

Encontrar_Ruta() 
{ 
    ruta_completa="`echo $1 | grep /`" 
    if [ "$ruta_completa" = "" ]; then 
     oIFS="$IFS" 
     IFS=: 
     for path in $PATH 
     do if [ -x "$path/$1" ]; then 
       if [ "$path" = "" ]; then 
        path="." 
       fi 
       ruta_completa="$path/$1" 
       break 
      fi 
     done 
     IFS="$oIFS" 
    fi 
    if [ "$ruta_completa" = "" ]; then 
     ruta_completa="$1" 
    fi 

    if [ -L "$ruta_completa" ]; then 
     ruta_completa=`ls -l "$ruta_completa" |sed -e 's/.* -> //' |sed -e 's/\*//'` 
    fi 
    dirname $ruta_completa 
} 

if [ "${RUTA_DEL_SOFTWARE}" = "" ]; then 
    RUTA_DEL_SOFTWARE="`Encontrar_Ruta $0`" 
fi 

LD_LIBRARY_PATH=.:${RUTA_DEL_SOFTWARE}:${LD_LIBRARY_PATH} 
export LD_LIBRARY_PATH 

if [ -x "${RUTA_DEL_SOFTWARE}/.Iniciar" ] 
then 
    cd "${RUTA_DEL_SOFTWARE}/" 
    exec "./.Iniciar" $* 
fi 
echo "No Puedo ejecutar este Software. Esta bien escrito el Script de Inicio?" 
exit 1 

好了,它這個有路徑的作品不帶空格的事情,好了,我嘗試當從 路徑運行「/媒體/ Compartido/JUEGOS/Emuladores &全集/ MS-DOS /阿拉丁」

例如我終端位於「桌面」文件夾中

$ cd $HOME/Desktop 
$ sh "/media/Compartido/Juegos/Emuladores & Roms/MS-D.O.S/Aladdin"/Iniciar 
No Puedo ejecutar este Software. Esta bien escrito el Script de Inicio? 

我不能啓動它

但是,如果我複製到文件夾 「/媒體/共享/遊戲/ MS-DOS /阿拉丁」

[ inukaze | 23-09-2014 | 08:55 pm ] 
[Desktop]$ sh "/media/Shared/Games/MS-D.O.S/Aladdin"/Iniciar 

Encontrado el Archivo de Configuracion para : Aladdin 

DOSBox version 0.74 
Copyright 2002-2010 DOSBox Team, published under GNU GPL. 
--- 
CONFIG:Loading primary settings from config file Aladdin.conf 
MIXER:Got different values from SDL: freq 22050, blocksize 256 
ALSA:Can't subscribe to MIDI port (65:0) nor (17:0) 
MIDI:Opened device:none 
Two or more joysticks reported, initializing with 2axis 
Using joystick USB Gamepad with 2 axes, 10 buttons and 0 hat(s) 
Using joystick Xbox Gamepad (userspace driver) with 6 axes, 11 buttons and 1 hat(s) 

,並與原來的 「zsh的」 嘗試位置

[ inukaze | 23-09-2014 | 08:58 pm ] 
[Desktop]$ zsh "/media/Compartido/Juegos/Emuladores & Roms/MS-D.O.S/Aladdin"/Iniciar 

Encontrado el Archivo de Configuracion para : Aladdin 

DOSBox version 0.74 
Copyright 2002-2010 DOSBox Team, published under GNU GPL. 
--- 
CONFIG:Loading primary settings from config file Aladdin.conf 
MIXER:Got different values from SDL: freq 22050, blocksize 256 
ALSA:Can't subscribe to MIDI port (65:0) nor (17:0) 
MIDI:Opened device:none 
Two or more joysticks reported, initializing with 2axis 
Using joystick USB Gamepad with 2 axes, 10 buttons and 0 hat(s) 
Using joystick Xbox Gamepad (userspace driver) with 6 axes, 11 buttons and 1 hat(s) 

這工作過,但我從慶典/ SH想RAN

感謝您的任何幫助。

回答

1

如果帶空格的路徑導致問題,總是意味着您沒有使用足夠的引用。

具體而言,您使用的變量可以包含空格而不用「引用」它們。

例如,在以下行中。

RUTA_DEL_SOFTWARE="`Encontrar_Ruta $0`" 

您不需要引用$0。所以,當你儘管引用的路徑作爲參數那裏運行sh "/media/Compartido/Juegos/Emuladores & Roms/MS-D.O.S/Aladdin"/Iniciar當你在上面的外殼看到的行使用該路徑(如$0)是:

RUTA_DEL_SOFTWARE="`Encontrar_Ruta '/media/Compartido/Juegos/Emuladores' '&' 'Roms/MS-D.O.S/Aladdin/Iniciar'`" 

然後不會在功能設置$1正確。

所以總結一下:Use more quotes

+0

我解決了這個問題,它的「PATH」變量在製作的.desktop文件裏面。我刪除該行,現在它的工作 – inukaze 2014-10-02 08:51:40

相關問題