Help with looping in shell scripting


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with looping in shell scripting
# 15  
Old 01-08-2012
Quote:
Originally Posted by jremio
Thanks for the tip... thats exactly what I am using, it takes very long tho. u only see 0000 - 9999 here because its just for the proof of concept. Really wonder if theres anyway to make it faster by a whole lot...
Correct me if I am wrong. You want to stop the hash when it hits a string starting with 00000? Is it?

--ahamed
# 16  
Old 01-08-2012
Quote:
Originally Posted by ahamed101
Correct me if I am wrong. You want to stop the hash when it hits a string starting with 00000? Is it?

--ahamed
What i actually want to accomplish is for eg loop values 0000-9999, hashing each value with md5 and stop when say the hash value (in hex) starts with 0 and tells me which value from 0000-9999 did that hash came from. Does not have to write the hashes into any output log since it really takes a long time.
# 17  
Old 01-09-2012
Something this?
Code:
for val in $( seq -w 0000 9999 )
do
  hash=$( echo $val | md5sum )
  [[ $hash =~ "^0000" ]] && echo "$val produced 0000 hash string" || echo $val >> log
done

--ahamed
# 18  
Old 01-09-2012
Hi.

Here is a comparison of the shell script and perl script. Both produce a line at "2345" so that you can see they are working and that the calculations match:
Code:
#!/usr/bin/env bash

# @(#) s1	Demonstrate shell vs perl for specific md5 value.

# Utility functions: print-as-echo, print-line-with-visual-space, debug.
# export PATH="/usr/local/bin:/usr/bin:/bin"
pe() { for _i;do printf "%s" "$_i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }
db() { ( printf " db, ";for _i;do printf "%s" "$_i";done;printf "\n" ) >&2 ; }
db() { : ; }
C=$HOME/bin/context && [ -f $C ] && $C md5sum perl

time {
first=89752
last=89760
pl " Results, $first ... $last, all in shell:"
for val in $( seq -w $first $last )
do
  hash=$( echo $val | md5sum )
  db " hash is $hash"
  [ $val -eq 2345 ] && pe " $val -> $hash, shell md5sum"
  [[ $hash =~ ^0000 ]] &&
  echo "$val produced 0000 hash string: $hash" ||
  echo $val >> log
done
}

time {
first=0000
last=9999
pl " Results, $first ... $last, all in shell:"
for val in $( seq -w $first $last )
do
  hash=$( echo $val | md5sum )
  db " hash is $hash"
  [ $val -eq 2345 ] && pe " $val -> $hash, shell md5sum"
  [[ $hash =~ ^0000 ]] &&
  echo "$val produced 0000 hash string" ||
  echo $val >> log
done
}

time {
first=2345
last=2346
pl " Results, $first ... $last, in perl:"
./p1 $first $last
}
time {
first=0000
last=9999
pl " Results, $first ... $last, in perl:"
./p1 $first $last
}

time {
first=00000
last=99999
pl " Results, $first ... $last, in perl:"
./p1 $first $last
}

exit 0

producing:
Code:
% ./s1

Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility "version")
OS, ker|rel, machine: Linux, 2.6.26-2-amd64, x86_64
Distribution        : Debian GNU/Linux 5.0.8 (lenny) 
GNU bash 3.2.39
md5sum (GNU coreutils) 6.10
perl 5.10.0

-----
 Results, 89752 ... 89760, all in shell:
89752 produced 0000 hash string: 00009d1a40b9e983bef130790f3101e5  -

real	0m0.051s
user	0m0.008s
sys	0m0.020s

-----
 Results, 0000 ... 9999, all in shell:
 2345 -> c47abe049e90cd2d285fd697ca4a8c6a  -, shell md5sum

real	0m32.657s
user	0m7.616s
sys	0m22.637s

-----
 Results, 2345 ... 2346, in perl:
 2345 -> c47abe049e90cd2d285fd697ca4a8c6a, perl Digest::MD5 (md5_hex)

real	0m0.015s
user	0m0.012s
sys	0m0.000s

-----
 Results, 0000 ... 9999, in perl:
 2345 -> c47abe049e90cd2d285fd697ca4a8c6a, perl Digest::MD5 (md5_hex)

real	0m0.058s
user	0m0.040s
sys	0m0.004s

-----
 Results, 00000 ... 99999, in perl:
 02345 -> 9d129bafb8d74f63aca3d3015269b48c, perl Digest::MD5 (md5_hex)
89752 produces md5 hash of 00009d1a40b9e983bef130790f3101e5

real	0m0.274s
user	0m0.244s
sys	0m0.008s

I am not suggesting that you must do this in perl, but I think you can see that shell is probably not the best choice.

Best wishes ... cheers, drl
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell scripting looping issue

#!bin/ksh --------------------------------------------------------------------------------------------- -- Get sequence number from database --------------------------------------------------------------------------------------------- .os rm... (3 Replies)
Discussion started by: swathi reddy1
3 Replies

2. Shell Programming and Scripting

Simple looping in shell

Hii all. I have a problem with my shell script. This is my code while do space.exe inputs/gr$count >> outputs/t$count count=$ done I ussually work in cygwin. When i tried in linux(ubuntu, kali linux) i found error said Syntax error : end of file unexpected (expecting "do")... (6 Replies)
Discussion started by: weslyarfan
6 Replies

3. Shell Programming and Scripting

Looping not completing in shell script

Hi, Iam using below code to login to servers to get cpu utilisation. but output is coming for only one server. code is below root@blr-svr-oclan-01 # more SSSC_CPU_UTIL1.sh #!/bin/sh echo "CPU UTILIZATION" while read line; do IDLE=`/usr/local/bin/sshpass -p 'xxx' ssh xxx@$line 'sar 2 2' |... (1 Reply)
Discussion started by: surender reddy
1 Replies

4. Shell Programming and Scripting

C Shell Script: While function not fully looping

I am new to scripting and this is probably the 4th or 5th simple script I have written. I am working with a HUGE number of data that need to be organized into folders and named a certain way. I wrote the naming script using a while function to go through the 1000-some folders and rename the files... (0 Replies)
Discussion started by: notluckyhannah
0 Replies

5. Shell Programming and Scripting

[Solved] help me in this looping in shell scripting

Hi, #!/bin/ksh result='/TIA/app/UniQP/queue/document/CSB' i=0; while ; do i=`expr $i + 1` if ($i -lt 5);then echo "THerrFile_$i.err"; else break; fi done ... (0 Replies)
Discussion started by: sudhir_83k
0 Replies

6. Shell Programming and Scripting

Call Shell scripting from Perl Scripting.

Hi How to call a shell scripting through a Perl scripting? Actually I need some value from Shell scripting and passes in the Perl scripting. So how can i do this? (2 Replies)
Discussion started by: anupdas
2 Replies

7. Shell Programming and Scripting

Looping through a shell script with sql statements

Hello members, I'm working on the Solaris environment and the DB i'm using is Oracle 10g. Skeleton of what I'm attempting; Write a ksh script to perform the following. I have no idea how to include my sql query within a shell script and loop through the statements. Have therefore given a... (4 Replies)
Discussion started by: novice82
4 Replies

8. Shell Programming and Scripting

Convert shell script for looping

Situation: I have a working shell script on our file server (OSXS Tiger) to connect to a workstation, which is using a portable home directory (phd), and rsync a user's MirrorAgent.log. I'm not that strong of a scripter (obviously), but I would like to add other workstations to this script as they... (4 Replies)
Discussion started by: le0pard13
4 Replies

9. Shell Programming and Scripting

looping through a variable in a shell script

hi, my first question is :- i would like to know how do i loop through the output of a variable. for ex:- if i have a variable called x and echo $x gives the output like feb 19 07 feb 20 07 feb 21 07 i would like to know how do i loop through this since it is separated and i... (1 Reply)
Discussion started by: ramachandranrr
1 Replies

10. Shell Programming and Scripting

difference between AIX shell scripting and Unix shell scripting.

please give the difference between AIX shell scripting and Unix shell scripting. (2 Replies)
Discussion started by: haroonec
2 Replies
Login or Register to Ask a Question