Sponsored Content
Top Forums Shell Programming and Scripting BASH: how to launch a program with parameters Post 302175277 by TinCanFury on Thursday 13th of March 2008 02:18:41 PM
Old 03-13-2008
BASH: how to launch a program with parameters

Hi, I'm a pretty big fan of BASH scripting. I've got a bunch I use for random things and lately a couple issues have been plaguing me.

Both are somewhat related, in that they deal with filenames with spaces and "escaped" characters and with launching a program with command line arguements (which invariably include these filenames).

for instance. I have a bunch of MKV movies with embedded subtitles. I'd like to extract the subtitles into their own SRT file. so I've got this basic script written:

Code:
#!/bin/bash

MOVIE=$1
echo "Original Movie: $MOVIE"
SRTFILE=${MOVIE/%mkv/srt}
echo "srt File: $SRTFILE"

TRACK=`mkvinfo "$MOVIE" | grep subtitle -B3 | grep Track\ number\:\ | sed -e 's$
#echo "Track is $TRACK"

if [[ "$TRACK" -gt "0" ]]
then
        echo "Track is: $TRACK"
        mkvextract tracks $MOVIE ${TRACK}:$SRTFILE
else
        echo "No subtitle track!"
fi

which gives me
Quote:
$ ./subtitleextract.sh Ying\ Xiong\ \(Hero\).mkv
Original Movie: Ying Xiong (Hero).mkv
srt File: Ying Xiong (Hero).srt
Track is: 3

Error: Missing track ID in argument 'Xiong'.
it should be running
mkvextract tracks Ying\ Xiong\ \(Hero\).mkv 3:Ying\ Xiong\ \(Hero\).srt
but obviously isn't.

The other script I've got that I'd love to get working is one I wrote to combine a series of avi files using avidemux. to do this I wrote a script that takes the input files as the arguements, deduces the output file name and then because of avidemux's arguement procedure I have it create a set of strings that it needs to append to the call to avidemux for each file being added to the original. I have a similar problem with this script as well, but with many more arguements involved. What I've done with this one is have it echo the required command to run which I can then copy and paste and it works fine, but it would be much nicer if I could get it to actually *launch* said command.

phew, hopefully someone that knows how to solve this bothered to read through this long post, and to you sir, I thank and congratulate you, especially if you have an answer to my troubles!

thanks!
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

how to launch program though telnet

I have launched telnet on nt and have connected to a unix server, I'm trying to run a program on the unix server which will launch a gui, but when I try to launch it I get the message "display not set\n" "By default set it to 0.0" I can sit down at the unix machine and launch the program with... (3 Replies)
Discussion started by: cbachman
3 Replies

2. Programming

launch an executable from a C++ program

Hi everybody! Could you please tell me how can I launch an executable from a C++ (on unix) program? thanks in advance! (2 Replies)
Discussion started by: nadiamihu
2 Replies

3. Programming

Problem with external program launch

Hello, in the application i'm writing i need to launch "recordmydesktop" to capture the screen,but i'm having a problem: when the recording stops,and the encoding of the saved file starts,the entire system hangs until the completion of the encoding.This happens if i launch recordmydesktop from my... (7 Replies)
Discussion started by: Zipi
7 Replies

4. Shell Programming and Scripting

Shell Script to launch C program

Hi there, im new too shell scripting and was wondering if it is possible to create a shell script to take in a variable and load a c program. My C program is a file monitor, and is started by using the terminal and using to following code ./monitor FileToBeMonitored is it possible to have... (12 Replies)
Discussion started by: gazmcc182
12 Replies

5. Shell Programming and Scripting

Launch a windows program from perl script

Hi i wanted to know if any one can give me an example on how to launch a windows program in a perl script. I wanted to open the nmap software on my computer with a perl script, i heard this can be done with the system function. Would the function be in this format: $text =... (1 Reply)
Discussion started by: kingbp
1 Replies

6. Shell Programming and Scripting

Perl script timer on program launch

So I am attempting to get a short but complex perl script to be able to time out an application that I will launch from a command line. The terminal I use is MKS C SHELL and I am having trouble doing the a job spawn that will launch the application and keep time on it. I know you could do this... (1 Reply)
Discussion started by: vas28r13
1 Replies

7. Shell Programming and Scripting

Input keyboard keys upon program launch

Hey guys, first post! I want to write a script that will wait 1 second and then input the keys CTRL+ALT+J to the application i just opened. The program is dosbox, and thay key combination starts video recording :) I have no idea how to program this, can anyone help please? thanks in advance! (2 Replies)
Discussion started by: brunobliss
2 Replies

8. Shell Programming and Scripting

Launch a text program inside a konsole at startup

Hi ULFers, I am trying to setup a (very) simple startup script on a centos 6.4 computer and it kind of failed.... Here are the details : As said just above the computer setup is running a CentOS 6.4 x64, on this computer a vncserver is automatically started (by a chkconfig vncserver on), i... (1 Reply)
Discussion started by: pierpier
1 Replies

9. Shell Programming and Scripting

Having trouble using expect to launch vpn program

Hello all. I am a linux and linux scripting newbie so please forgive my ignorance. I have been tasked to write what I thought should be a pretty simple script that does the following: 1) Loads our forticlient ssl vpn command line client 2) sends the vpn password to the client Pretty... (2 Replies)
Discussion started by: wblakenc
2 Replies

10. Shell Programming and Scripting

Launch shell script with parameters from a webpage button

I want to create a simple html page that should contain 2 fields in which the user can write the input. Then I want to have a button that should launch a shell script with the parameters inserted by user in the fields from the webpage. This is the code behind my webpage: <html> <form... (2 Replies)
Discussion started by: black_fender
2 Replies
Subtitles(3pm)						User Contributed Perl Documentation					    Subtitles(3pm)

NAME
Subtitles - handle video subtitles in various text formats DESCRIPTION
Video files (avi mpeg etc) are sometimes accompanied with subtitles, which are currently very popular as text files. "Subtitles" provides means for simple loading, re-timing, and storing these subtitle files. A command-line tool subs for the same purpose and using "Subtitles" interface is included in the distribution. The module supports "srt", "sub", "smi", and "mdvd" subtitle formats. Time values are floats, in seconds with millisecond precision. SYNOPSIS
use Subtitles; my $sub = Subtitles->new(); open F, 'Ichi The Killer.sub' or die "Cannot read:$!"; die "Cannot load:$@ " unless $sub-> load(*F); close F; # back two minutes $sub-> shift( $sub-> parse_time('-02:00')); # re-frame from 25 fps $sub-> scale( 23.976 / 25 ); # or both $sub-> transform( -120, 0.96); $sub-> transform( -120, 0.96, 0, $sub-> length - 60); # split in 2 my ( $part1, $part2) = $sub-> split( $self-> length / 2); # join back with 5-second gap $part1-> join( $part2, 5); # save open F, "> out.sub" or die "Cannot write:$! "; $part1-> save( *F); close F; # report print "sub is ", time2str( $sub-> length); API
Package methods codecs Returns array of installed codecs. hms2time HOURS, MINUTES, SECONDS, MILLISECONDS Combines four parameters into float time in seconds. time2hms TIME Splits time into four integers, - hours, minutes, seconds, and milliseconds. If time is less than zero, zero times are returned. time2shms Splits time into five integers, - time sign, hours, minutes, seconds, and milliseconds. time2str TIME Converts time to a human-readable string. Object methods clear Removes all content codec [ STRING ] If STRING is not defined, returns currently associated codec. Otherwise, sets the new codec in association. The STRING is the codec's package name, such as "Subtitles::Codec::srt". dup [ CLEAR ] Duplicates object instance in deep-copy fashion. If CLEAR flag is set, timeframes are not copied. join GUEST, GAP Adds content of object GUEST at the end of the list of subtitles with GAP in seconds. length Returns length of subtitle span. load FH [ CODEC ] Reads subtitle content into object. If successful, returns 1; otherwise undef is returned and $@ contains the error. By default, tries to deduce which codec to use; to point the selection explicitly CODEC string is to be used. lines Returns number of subtitle cues. new Creates a new instance. To force a particular codec, supply "codec" string here. parse_time STRING Parses STRING which is either a "[[HH:]MM:]SS[,MSEC]" string or string in a format specific to a codec, for example, number of a frame. rate FPS Forces a particluar frame-per-second rate, if a codec can make use of it. save FH Writes content of instance into FH file handle, using the associated codec. scale A Changes time-scale. If A is 2, the subtitles go off 2 times slower, if 0.5 - two times faster, etc. shift B Shifts timings by B seconds. B can be negative. split TIME Splits the content of the instance between two newly created instances of the same class, by TIME, and returns these. The both resulting subtitles begin at time 0. transform A, B [FROM, TO] Applies linear transformation to the time-scale, such as "u = At + B" where "t" is the original time and "u" is the result. If FROM and TO brackets are set, the changes are applied only to the lines in the timeframe between these. BUGS
This is alpha code, more a proof-of-concept rather that anything else, so most surely bugs are lurking. Anyway: not all subtitle types are recognized. The modules doesn't handle multi-language subtitles. SEE ALSO
subs - command-line wrapper for this module THANKS
<http://dvd.box.sk/>, <http://subs.2ya.com>. AUTHOR
Dmitry Karasik, <dmitry@karasik.eu.org>. perl v5.14.2 2012-02-14 Subtitles(3pm)
All times are GMT -4. The time now is 09:17 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy