[Bash] Shell script welke applicatie start

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Vinze
  • Registratie: Augustus 2006
  • Laatst online: 30-09 12:15
Ik heb hier een Raspberry Pi staan waarmee ik via het programma omxplayer films afspeel. Dit programma start ik standaard met een aantal argumenten, en ik vroeg me af of dit niet makkelijker kan. Dus in plaats van iedere keer omxplayer -r -o hdmi --align center Film.mkv in te typen, alleen maar omxplay Film.mkv.

Na wat Googelen lijkt een .sh bestandje hiervoor wel geschikt, echter sluit het script direct weer af zodra ik het uitvoer en ik heb geen idee waarom.. De enige melding die ik krijg is 'Have a nice day', wat omxplayer standaard zegt bij het afsluiten.

Zie het omxplay.sh script, welke ik uitvoer door sh omxplay.sh /pad/naar/film.mkv in te typen:
code:
1
2
#!/bin/bash
omxplayer -r -o hdmi --align center $1


Iemand die me kan vertellen wat ik fout doe?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • ripperke
  • Registratie: Augustus 2003
  • Laatst online: 19-08 16:06

ripperke

w00t!

Zou gewoon moeten werken lijkt me.. Zitten er toevallig spaties in de filename misschien? Als dat het geval is even je spaties escapen of van $1 $@ maken.

Met sh -x omxplay.sh /pad/... ga je zien wat hij precies wilt uitvoeren, misschien geraak je daarmee verder.

If TCP/IP handshaking was less formal, perhaps SYN/ACK would be YO/WASSUP


Acties:
  • 0 Henk 'm!

  • begintmeta
  • Registratie: November 2001
  • Niet online

begintmeta

Moderator General Chat
Ik neem aan dat er geen whitespace of ndere nare zaken in het pad te vinden is? Overigens kan je in plaats van een scriptje ook een shellalias overwegen. $@ is in dit geval sowieso een goed idee lijkt me.

[ Voor 45% gewijzigd door begintmeta op 16-07-2014 19:44 ]


Acties:
  • 0 Henk 'm!

  • Thralas
  • Registratie: December 2002
  • Laatst online: 30-09 08:10
Dat zou moeten werken.

Maar waarom niet zo?

code:
1
alias omxplay="omxplayer -r -o hdmi --align center"

Acties:
  • 0 Henk 'm!

  • Vinze
  • Registratie: Augustus 2006
  • Laatst online: 30-09 12:15
ripperke schreef op woensdag 16 juli 2014 @ 19:42:
Zou gewoon moeten werken lijkt me.. Zitten er toevallig spaties in de filename misschien? Als dat het geval is even je spaties escapen of van $1 $@ maken.

Met sh -x omxplay.sh /pad/... ga je zien wat hij precies wilt uitvoeren, misschien geraak je daarmee verder.
Ah dat was het inderdaad! Vreemd, want als ik zelf die quotes eromheen zet werkte ook niet..
Thralas schreef op woensdag 16 juli 2014 @ 19:44:
Dat zou moeten werken.

Maar waarom niet zo?

code:
1
alias omxplay="omxplayer -r -o hdmi --align center"
Dat is nog veel makkelijker inderdaad, wist helemaal niet dat dat kon! Thanks :)

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:30

Hero of Time

Moderator LNX

There is only one Legend

Als je een parameter meegeeft dat spaties of andere tekens kan bevatten wat door de shell geïnterpreteerd kan worden, moet je er quotes omheen zetten. Dan krijg je dus omxplayer "$1".

Je kan veel meer met aliasen doen. Kijk maar eens in de NOS Kroeg - Deel 2, daar zijn volgens mij wel een paar voorbeelden voorbij gekomen. En anders kan je 't altijd nog via Google vinden. Je kan zelfs een hele functie naar een alias zetten, wat ik heb gedaan voor aptitude:
code:
1
2
3
4
5
6
7
8
saptitude () {
        case $1 in
                *)
                        sudo aptitude $@
                        sudo -k
                        ;;
        esac
}

Kan denk wel simpeler, maar gaat even om 't idee. De sudo -k beëindigd de sudo sessie (normaal gesproken is er een timeout van 15 minuten, of wat er ook in /etc/sudoers staat).

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Rainmaker
  • Registratie: Augustus 2000
  • Laatst online: 14-07-2024

Rainmaker

RHCDS

Er is op de meeste distro's een /etc/bash_aliases.

Als je het daarin zet, geldt het voor alle gebruikers en meteen bij het inloggen.

We are pentium of borg. Division is futile. You will be approximated.


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:30

Hero of Time

Moderator LNX

There is only one Legend

Niet op Debian.

Commandline FTW | Tweakt met mate

Pagina: 1