Script de bash: programa com parâmetros como variável única: comando não encontrado

1

Eu escrevi o script bash abaixo (chamado hdmi_output) e está funcionando na maioria das partes como eu esperava.

Por exemplo, eu corro hdmi_output run firefox e o Firefox é iniciado no monitor externo.

Mas às vezes eu quero rodar programas com argumentos e isso não funciona mais. Por exemplo. quando executando hdmi_output run "firefox -P -no-remote" , recebo isso:

/usr/bin/vglrun: 296: exec: **firefox -P -no-remote: not found

Eu o escrevi entre aspas para ser tratado como uma variável, mas não parece funcionar.

Alguém pode me ajudar a melhorar o script, talvez o comando shift deva ser usado?

#!/bin/bash

start_hdmi() {
...
...
}

run_hdmi() {
    DISPLAY=:8 LD_LIBRARY_PATH=/usr/lib/nvidia-current:$LD_LIBRARY_PATH optirun "$@"
}

if [[ "$@" == "start" ]]; then
    start_hdmi
elif [[ "$#" == "2" && "$1" == "run" ]]; then
    run_hdmi "$2"
else
    echo "$0 start|run <program>"
fi
    
por Matt 25.08.2012 / 16:13

1 resposta

0

Remova as aspas duplas aqui run_hdmi "$2"

    
por seeline 25.08.2012 / 16:31