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.
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)
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)
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)
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)
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)
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)
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)
#!bin/ksh
---------------------------------------------------------------------------------------------
-- Get sequence number from database
---------------------------------------------------------------------------------------------
.os rm... (3 Replies)
Discussion started by: swathi reddy1
3 Replies
LEARN ABOUT CENTOS
platform::shell
platform::shell(n) Tcl Bundled Packages platform::shell(n)
__________________________________________________________________________________________________________________________________________________NAME
platform::shell - System identification support code and utilities
SYNOPSIS
package require platform::shell ?1.1.4?
platform::shell::generic shell
platform::shell::identify shell
platform::shell::platform shell
_________________________________________________________________DESCRIPTION
The platform::shell package provides several utility commands useful for the identification of the architecture of a specific Tcl shell.
This package allows the identification of the architecture of a specific Tcl shell different from the shell running the package. The only
requirement is that the other shell (identified by its path), is actually executable on the current machine.
While for most platform this means that the architecture of the interrogated shell is identical to the architecture of the running shell
this is not generally true. A counter example are all platforms which have 32 and 64 bit variants and where a 64bit system is able to run
32bit code. For these running and interrogated shell may have different 32/64 bit settings and thus different identifiers.
For applications like a code repository it is important to identify the architecture of the shell which will actually run the installed
packages, versus the architecture of the shell running the repository software.
COMMANDS
platform::shell::identify shell
This command does the same identification as platform::identify, for the specified Tcl shell, in contrast to the running shell.
platform::shell::generic shell
This command does the same identification as platform::generic, for the specified Tcl shell, in contrast to the running shell.
platform::shell::platform shell
This command returns the contents of tcl_platform(platform) for the specified Tcl shell.
KEYWORDS
operating system, cpu architecture, platform, architecture
platform::shell 1.1.4 platform::shell(n)