Sponsored Content
Full Discussion: How to shorten my code?
Top Forums UNIX for Dummies Questions & Answers How to shorten my code? Post 302872161 by bakunin on Thursday 7th of November 2013 07:40:52 PM
Old 11-07-2013
Quote:
Originally Posted by eggisbad
Hi there everyone, as my title stated, how can i shorten my code? Im new to shell scripting and i think my code can be shorten to just a line.
You don't want to "shorten your code" - you want to shorten the time it needs to get executed. This is sometimes, but not always the same.

First thing you should do in your code is straighten it out:

Code:
	for i in `cut -d "," -f4 $PAYROLL` #Loop Salary

You should NOT do this: you should not use a "for"-loop for a possibly long list, because the expansion will let the resulting line (after evaluation of the backticks) grow and shell command lines have a certain maximum length (see the "MAX_LIN" kernel constant). Further, you should not use the backticks at all, because they are deprecated. Use a simple pipeline with a while-loop:

Code:
	cut -d "," -f4 $PAYROLL | while read i ; do

Another point is: let. You havent't told us which shell you use, but you do not need "let" any more in any modern bourne-descending shell (ksh, bash, ...). Instead of

Code:
let "count_0_to_999 = count_0_to_999 + 1"

simply write

Code:
(( count_0_to_999 += 1 ))

Last hint: you start comparing at the bottom and therefore you have always two tests to perform to find out if a value is within a certain range. Start at the top and you have only one test. Pseudo-code:

Code:
if salary > 10000
     count_above_10000 += 1
elif salary >= 6000
     count_6000_to_9999 += 1
elif salary >= 2000
     count_5999_to_2000 += 1
elif salary >= 1000
     count_1999_to_1000 += 1
elif salary > 0
     count_999_to_0 += 1
else
     print "Error: we should never arrive here."
fi

A last point: typecast your variables before you use them:
Code:
typeset -i count_0_to_999=0
typeset -i count_1000_to_2999=0
typeset -i count_2000_to_5999=0
typeset -i count_6000_to_9999=0
typeset -i count_10000_above=0

 

7 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Howto shorten script in a busybox environment by using for loops?

My satellite receiver is equipped with busybox, so a small linux version. That is why I can not use certain commands like #tomorrow in date commands or #date -d "+1 day" and thus I have to use: day1=$ I want to download every day 6 files from the internet but the filenames consist of the date... (6 Replies)
Discussion started by: ni_hao
6 Replies

2. Shell Programming and Scripting

script to shorten usernames and output to file

Hopefully someone here can point me in the correct direction. I'm working on a username migration and am trying to map my users ols usernames to the new ones. Right now every user has a username of firstname.lastname i.e. john.doe I'm trying to create a bash or python script that will take... (3 Replies)
Discussion started by: binary-ninja
3 Replies

3. Shell Programming and Scripting

Block of code replacement in Java source code through Unix script

Hi, I want to remove the following code from Source files (or replace the code with empty.) from all the source files in given directory. finally { if (null != hibernateSession && hibernateSession.isOpen()) { //hibernateSession.close(); } } It would be great if the script has... (2 Replies)
Discussion started by: hareeshram
2 Replies

4. UNIX for Dummies Questions & Answers

How can i use function for the below script to shorten it?

Hi All, i worte a shell script which will zcat the .gz file and write it in to a tmp file and then again cat the file and convert it to Dos mode. Next step is i am greping the file to search for the particular string on the 1st line and if the string does not exits it will insert the 1st line... (1 Reply)
Discussion started by: vikatakavi
1 Replies

5. Shell Programming and Scripting

Shorten header of protein sequences in fasta file

I have a fasta file as follows >sp|O15090|FABP4_HUMAN Fatty acid-binding protein, adipocyte OS=Homo sapiens GN=FABP4 PE=1 SV=3 MCDAFVGTWKLVSSENFDDYMKEVGVGFATRKVAGMAKPNMIISVNGDVITIKSESTFKN TEISFILGQEFDEVTADDRKVKSTITLDGGVLVHVQKWDGKSTTIKRKREDDKLVVECVM KGVTSTRVYERA >sp|L18484|AP2A2_RAT AP-2... (3 Replies)
Discussion started by: alexypaul
3 Replies

6. Shell Programming and Scripting

Ps command and awk - shorten characters

ps -e -o pcpu -o pid -o user -o args | sort -k 1 | tail -6r %CPU PID USER COMMAND 0.3 223220 root /usr/tivoli/tsm/client/ba/bin/dsmc sched 0.2 411332 root /usr/sbin/syslogd 0.1 90962 root /usr/sbin/syncd 60 0.0 10572 root -ksh 0.0 94270 root -ksh ... (4 Replies)
Discussion started by: SkySmart
4 Replies

7. Shell Programming and Scripting

Shorten header of protein sequences in fasta file to only organism name

I have a fasta file as follows >sp|Q8WWQ8|STAB2_HUMAN Stabilin-2 OS=Homo sapiens OX=9606 GN=STAB2 PE=1 SV=3 MMLQHLVIFCLGLVVQNFCSPAETTGQARRCDRKSLLTIRTECRSCALNLGVKCPDGYTM ITSGSVGVRDCRYTFEVRTYSLSLPGCRHICRKDYLQPRCCPGRWGPDCIECPGGAGSPC NGRGSCAEGMEGNGTCSCQEGFGGTACETCADDNLFGPSCSSVCNCVHGVCNSGLDGDGT... (3 Replies)
Discussion started by: jerrild
3 Replies
All times are GMT -4. The time now is 12:07 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy