O problema é que o argumento para lxterminal
' --command
é apenas uma string, não pode ter um comando e seus argumentos como alguns outros terminais como xterm
do.
lxterminal
analisa essa cadeia usando suas próprias regras para determinar o comando para executar seus argumentos. Isso é semelhante, mas não é idêntico à análise de shell Bourne.
Ele reconhece '...'
como aspas strongs e espaço como separador de argumentos, então você pode implementar citações para ele como:
lxquote() {
awk -v q="'" '
function lxquote(s) {
gsub(q, q "\" q q, s)
return q s q
}
BEGIN {
for (i = 1; i < ARGC; i++) {
printf sep "%s", lxquote(ARGV[i])
sep = " "
}
}' "$@"
}
E chame lxterminal
como:
lxterminal --command="$(lxquote ./script2 "$@")"
Como alternativa, se o intérprete script
for bash
, você poderá fazer:
printf -v code '%q ' ./script2 "$@"
CODE=$code lxterminal --command="bash -c 'eval \"\$CODE\"'"