Portál AbcLinuxu, 9. listopadu 2025 01:06
rozmery=`mplayer "$1" -frames 0 | grep VIDEO`soubor_s mezerou.avi,soubor_s a pak mezerou.avi. Co s tím?
IFS="_" a pak následně echo $IFS, ale je vidět, že je tam pořád mezera a konec řádku...
IFS dělá přesný opak. Zkus proměnnou $@, tam jsou všechny parametry (za předpokladu, že je jméno souboru jediný předávaný parametr. Jinak by bylo nutno postupně testovat jednotlivé argumenty zda dávají dohromady existující soubor (a ani to by nebylo 100% účinné). Pak ještě existuje program getopts který dělá velkou část parsování za programátora.
skript.sc "prvni parametr.avi",#!/bin/bash # set -x rozmery=`mplayer "$1" -frames 0 | grep VIDEO` echo "$rozmery"
$ ./run.sh "svehla k.wmv" a výstup:
Can't open joystick device /dev/input/js0: No such file or directory Can't init input joystick mplayer: could not connect to socket mplayer: No such file or directory Failed to open LIRC support. You will not be able to use your remote control. open: No such file or directory [MGA] Couldn't open: /dev/mga_vid open: No such file or directory [MGA] Couldn't open: /dev/mga_vid [VO_TDFXFB] Can't open /dev/fb0: No such file or directory. s3fb: can't open /dev/fb0: No such file or directory VIDEO: [WMV3] 360x288 24bpp 1000.000 fps 204.4 kbps (25.0 kbyte/s)
$ ./run.sh svehla\ k.wmv a výstup:
Can't open joystick device /dev/input/js0: No such file or directory Can't init input joystick mplayer: could not connect to socket mplayer: No such file or directory Failed to open LIRC support. You will not be able to use your remote control. open: No such file or directory [MGA] Couldn't open: /dev/mga_vid open: No such file or directory [MGA] Couldn't open: /dev/mga_vid [VO_TDFXFB] Can't open /dev/fb0: No such file or directory. s3fb: can't open /dev/fb0: No such file or directory VIDEO: [WMV3] 360x288 24bpp 1000.000 fps 204.4 kbps (25.0 kbyte/s)ani v jednom případě mplayer nehlásí nic o tom, že by měl problém s interpretací prvního pozičního parametru.
Ten skript jsem měl uloženej v ~/bin, nevšiml jsem si ale, že mám nastavenej stejnojmennej alias, kterej vede jinam. Problém byl v tom, že v tom jiném souboru chybí uvozovky u $1. Vypadá to teda: nazev\ souboru\ s\ mezerou.avi ?aneb vzdy pred mezeru dat obracenou zavorku
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.