Bash com múltiplos espaços em um único argumento

0

Estou tentando descobrir como criar um bash com vários argumentos e um argumento tem vários sinalizadores. Eu preciso fazer isso para abrir o xterm, navegar para o script bash e executá-lo com argumentos.

Este é o meu código:

#!/bin/bash
if [ "$Running_In_New_Xterm" != t ] ; then
Running_In_New_Xterm=exec xterm -hold -e "cd $3 && $1 $2"
Running_In_New_Xterm=t
fi

$ 2 é um comando para executar sinalizadores em $ 1 -a blah -o blahblah

Estou tentando determinar a maneira correta de executar o # 2. Eu li que tenho que adicionar '' ao ter um argumento com múltiplos espaços, mas estou tentando isso no lado de entrada, e não está funcionando. Eu recebo "EOF inesperado enquanto procurava por correspondência '' '", o que sugere que o meu problema tem algo a ver com o fato de que $ 2 não está sendo executado corretamente. Eu estou no ponto que eu acho que tem algo a ver com o bash itsel.

    
por Jacob 21.04.2018 / 21:06

1 resposta

0

cd $3 && $1 $2 não é um programa que pode ser chamado. Você precisa

Running_In_New_Xterm=exec xterm -hold -e bash -c "cd $3 && $1 $2"

ou (com cotação, se os argumentos exigirem isso; -a blah -o blahblah provavelmente não deve ser citado)

Running_In_New_Xterm=exec xterm -hold -e bash -c "exec cd '$3' && exec '$1' '$2'"
    
por 22.04.2018 / 01:18