Sponsored Content
Full Discussion: Shell script question
Top Forums Shell Programming and Scripting Shell script question Post 302937455 by RudiC on Thursday 5th of March 2015 01:08:25 PM
Old 03-05-2015
I'm pretty sure the script given above does NOT work! You are redirecting stdout to your input file, and read from stdin, i.e. your terminal if run interactively.

I'd propose to exert utmost care if reproducing scripts/commands/data in these fora.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

shell script question

I am using ksh. There is a report having amounts in the following format, 34343.67- 2343.45 23434.89- I want to sum up all the amounts. For this I first need to find out if there is a minus sign at the end and prefix it before summing up. How to achieve this? I thought of using an... (2 Replies)
Discussion started by: tselvanin
2 Replies

2. Shell Programming and Scripting

Shell script question

Hello, i am doing a project for school and i cannot figure out whats wrong with my 2 programs they dont seem to work at all. the first program is called isprime and naturally it checks to see if hte number is prime or not here is my code: #!/usr/bin/bash num=$1 echo you typed if ... (2 Replies)
Discussion started by: jbou1087
2 Replies

3. UNIX for Dummies Questions & Answers

Linux Shell Question: how to print the shell script name ?

Suppose I have a script named "sc.sh" in the script how to print out its name "sc.sh"? (3 Replies)
Discussion started by: meili100
3 Replies

4. Shell Programming and Scripting

Shell Script question

Hello Experts, I am new at this and need some help. I am looking for a delete command that allows me after I grep for the hostname to delete all the lines between two characters. for example I want to delete the first line all the way up to the } character host test019 { hardware ethernet... (10 Replies)
Discussion started by: ryanique
10 Replies

5. Shell Programming and Scripting

shell script question

Hi, The contents of my file is below: Name,Location,Degree,Gender,Awards Robert,Philadelphia,Accounting,Male,5 Jane,Chicago,Business,Female,2 Allan,New York,Engineering,Male,6 Tom,Detroit,Computer Science,Male,10 Nancy,Milwaukee,Engineering,Female,4 I want to add a "ID" in the 1st line... (2 Replies)
Discussion started by: xinoo
2 Replies

6. Shell Programming and Scripting

shell script question

I have script as following.. server_status= some command | grep "Total error: 0" if ; then echo " Server $(hostname) is Down" >>Result fi else echo " Server is OK on $(hostname)" >>Result the if command seems to be not working properly for some... (13 Replies)
Discussion started by: s_linux
13 Replies

7. Homework & Coursework Questions

Question on shell script

Hiiiiiiiiiiiii all, Please i want your help fast, the teacher gave us this assignment can u help me to write it? this is the question: Write a shell script to point all prime numbers from the fibonacci series of integer N? using Red hat Os Thanks all and waiting for ur answers... (1 Reply)
Discussion started by: moonlips
1 Replies

8. Homework & Coursework Questions

question on shell script

hiiiiiiiiiiiii,,I found an error on my following script but couldnt find it!!! Can you please help me as soon as possible?! echo "enter a number " read n i=0 first=0 second=1 result=0 prime="true" echo –n " $first $second " while do result=`expr $first + $second` first=$second... (10 Replies)
Discussion started by: moonlips
10 Replies

9. Homework & Coursework Questions

question in shell script

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: Write a Bourne shell script which: • Has one command line argument. • If the command line argument is a... (5 Replies)
Discussion started by: abood1190
5 Replies

10. Shell Programming and Scripting

Shell script question

As per code it is getting matched. not sure why it assigning to cols=0. Any inputs please. Input : passed is shell.sh c tablename. if ; then cols=1 table=$2 else cols=0 table=$1 fi (1 Reply)
Discussion started by: ramkumar15
1 Replies
Git::Repository::Tutorial(3pm)				User Contributed Perl Documentation			    Git::Repository::Tutorial(3pm)

NAME
Git::Repository::Tutorial - Control git from Perl using Git::Repository SYNOPSIS
use Git::Repository; # do cool stuff with Git, using the following advice HOW-TO A "Git::Repository" object represents an actual Git repository, against which you can run commands. Obtain a Git::Repository object from an existing repository If your script is expected to run against a repository in the current directory (like most Git commands), let "Git::Repository" handle the magic: $r = Git::Repository->new(); If the repository has a working copy (work tree): $r = Git::Repository->new( work_tree => $dir ); If the repository is a bare repository, or you prefer to provide the .git directory location: $r = Git::Repository->new( git_dir => $gitdir ); If the work tree and the git directory are in unrelated locations, you can also provide both: $r = Git::Repository->new( work_tree => $dir, git_dir => $gitdir ); The constructor also accepts an option hash. The various options are detailed in the manual page for "Git::Repository::Command". Run any git command Git commands can be run against an existing "Git::Repository" object, or against the class itself (in which case, git will try to deduce its context from the current directory and the environment). The pattern for running commands is always the same: $r->run( $command => @arguments, \%options ); The $command and @arguments are identical to those you'd pass to the "git" command-line tool. The options hash contains options, as described in the manual page for "Git::Repository::Command". Create a new repository Sometime, you'll need to create the Git repository from scratch: # git version 1.6.5 and above Git::Repository->run( init => $dir ); $r = Git::Repository->new( work_tree => $dir ); # any older git requires the command to be run in the work tree, # so we use the cwd option Git::Repository->run( init => { cwd => $dir } ); $r = Git::Repository->new( work_tree => $dir ); Note that the old "create()" method is obsolete, warns and will be removed in a future version. Clone a repository Cloning works the same way: Git::Repository->run( clone => $url => $dir ); $r = Git::Repository->new( $dir ); Run a simple command When you don't really care about the output of the command, just call it: $r->run( add => '.' ); $r->run( commit => '-m', 'my commit message' ); In case of an error or warning, "Git::Repository" will "croak()" or "carp()" appropriately. Process normal and error output The "run()" command doesn't capture stderr: it only warns (or dies) if something was printed on it. To be able to actually capture error output, "command()" must be used. my $cmd = $r->command( @cmd ); my @errput = $cmd->stderr->getlines(); $cmd->close; "run()" also captures all output at once, which can lead to unnecessary memory consumption when capturing the output of some really verbose commands. my $cmd = $r->command( log => '--pretty=oneline', '--all' ); my $log = $cmd->stdout; while (<$log>) { ...; } $cmd->close; Of course, as soon as one starts reading and writing to an external process' communication handles, a risk of blocking exists. Caveat emptor. Provide input on standard input Use the "input" option: my $commit = $r->run( 'commit-tree', $tree, '-p', $parent, { input => $message } ); Change the environment of a command Use the "env" option: $r->run( 'commit', '-m', 'log message', { env => { GIT_COMMITTER_NAME => 'Git::Repository', GIT_COMMITTER_EMAIL => 'book@cpan.org', }, }, ); See Git::Repository::Command for other available options. Process the output of git log When creating a tool that needs to process the output of git log, you should always define precisely the expected format using the --pretty option, and choose a format that is easy to parse. Assuming git log will output the default format will eventually lead to problems, for example when the user's git configuration defines "format.pretty" to be something else than the default of "medium". Process the output of git shortlog git shortlog behaves differently when it detects it's not attached to a terminal. In that case, it just tries to read some git log output from its standard input. So this oneliner will hang, because git shortlog is waiting for some data from the program connected to its standard input (the oneliner): perl -MGit::Repository -le 'print scalar Git::Repository->run( shortlog => -5 )' Whereas this one will "work" (as in "immediately return with no output"): perl -MGit::Repository -le 'print scalar Git::Repository->run( shortlog => -5, { input => "" } )' So, you need to give git shortlog some input (from git log): perl -MGit::Repository -le 'print scalar Git::Repository->run( shortlog => { input => scalar Git::Repository->run( log => -5 ) } )' If the log output is large, you'll probably be better off with something like the following: use Git::Repository; # start both git commands my $log = Git::Repository->command('log')->stdout; my $cmd = Git::Repository->command( shortlog => -ens ); # feed one with the output of the other my $in = $cmd->stdin; print {$in} $_ while <$log>; close $in; # and do something with the output print $cmd->stdout->getlines; Wrap git in a sudo call If for a given repository you want to wrap all calls to git in a "sudo" call, you can use the "git" option with an array ref: my $r = Git::Repository->new( { git => [qw( sudo -u nobody git )] } ); In this case, every call to git from $r will actually call "sudo -u nobody git". Use submodules Because "Git::Repository" automatically sets the "GIT_DIR" and "GIT_WORK_TREE" environment variables, some "submodule" sub-commands may fail. For example: $r->run( submodule => add => $repository => 'sub' ); will give the following error: error: pathspec 'sub' did not match any file(s) known to git. To avoid this error, you should enforce the removal of the "GIT_WORK_TREE" variable from the environment in which the command is run: $r->run( submodule => add => $repository => 'sub', { env => { GIT_WORK_TREE => undef } } ); Note that "System::Command" version 1.04 is required to be able to remove variables from the environment. Sort git versions Basically, you need to recreate the "cmp" operator for Git versions, using the private "_version_gt()" method (which accepts two parameters): @sorted_versions = sort { Git::Repository::_version_gt( $a, $b ) || -Git::Repository::_version_gt( $b, $a ) } @versions; AUTHOR
Philippe Bruhat (BooK), "<book at cpan.org>" COPYRIGHT
Copyright 2010-2011 Philippe Bruhat (BooK), all rights reserved. LICENSE
This documenation is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.14.2 2011-12-28 Git::Repository::Tutorial(3pm)
All times are GMT -4. The time now is 11:01 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy