Sponsored Content
Top Forums Shell Programming and Scripting Is there a maximum length for a shell script command? Post 302682107 by bakunin on Sunday 5th of August 2012 02:47:37 PM
Old 08-05-2012
Actually there is a maximum line length for most of the line-oriented utilities (awk, sed, grep ...) which applies to the shell too (at least to all shells of my knowledge). This is a system constant and can be found in /usr/include/limits.h.

To quote from the POSIX standard:

Quote:
LINE_MAX
Unless otherwise noted, the maximum length, in bytes, of a utility's input line (either standard input or another file), when the utility is described as processing text files. The length includes room for the trailing newline. Minimum Acceptable Value: _POSIX2_LINE_MAX
There might be other limits, which can be found in this file too:

Quote:
ARG_MAX
Maximum length of argument to the exec functions including environment data. Minimum Acceptable Value: _POSIX_ARG_MAX
Quote:
MAX_INPUT
Minimum number of bytes for which space will be available in a terminal input queue; therefore, the maximum number of bytes a portable application may require to be typed as input before reading them. Minimum Acceptable Value: _POSIX_MAX_INPUT
The minimum of these three values will determine the actual upper bound for the length of your input line.

In fact some 15 years ago, when these values were considerably smaller on average, it was possible to break some seemingly working shell-code like this:

Code:
for FILE in $(ls) ; do ..... ; done

by executing it for a directory with enough entries. Given good enough (=bad enough) circumstances this will lead to the "input line too long" error if the file names add up to the critical amount of characters. To avoid this risk altogether it is advisable to write it this way:

Code:
ls | while read FILE ; do ..... ; done

because the pipeline will not have that problem.

I hope this helps.

bakunin

Last edited by bakunin; 08-05-2012 at 03:56 PM..
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Maximum file name length

Hi folks, Can anybody tell me whether there is any limit on the file name length and directory name length in UNIX. (4 Replies)
Discussion started by: rkkiran
4 Replies

2. UNIX for Dummies Questions & Answers

Maximum Command Length for Korn shell

What is the maximum size of a command which can be given in telnet command prompt in unixfor Korn shell? (2 Replies)
Discussion started by: miltony
2 Replies

3. UNIX for Dummies Questions & Answers

Maximum Command Length

What is the maximum size of a command which can be given in telnet command prompt in unix? (2 Replies)
Discussion started by: miltony
2 Replies

4. UNIX for Dummies Questions & Answers

what is the maximum length of th os-command line in Unix.

Hi All, I didn't find any thread that match this question so I hope it's not redundant. I am totally new to Unix. I want to know what is the maximum length of the os-commandline in Unix. Will it cause any problem if I run any application whose total path length is much longer than 256... (2 Replies)
Discussion started by: kumardesai
2 Replies

5. UNIX for Dummies Questions & Answers

Maximum length of a path given as an argument to a shell script

hi, I am using solaris10. I have to write a bourne shell script, which copies files for the said destination path which is passed as an argument to the script. it looks like this myscript.sh /var/test -->destination path now i would like to know what is the maximum length i can... (3 Replies)
Discussion started by: raghu.amilineni
3 Replies

6. Shell Programming and Scripting

what is the maximum length of a unix shell variable which can be can passed to plsql

what is the maximum length of a unix shell variable which can be can passed to plsql variable:( (1 Reply)
Discussion started by: alokjyotibal
1 Replies

7. UNIX for Dummies Questions & Answers

How to increase the maximum record length

Hi, I need to create a file of record length more than 300 characters. But in my unix box, i am able to create a file only with a maximum of 256 characters per record. Is there anyway i can create a file with more than 300 characters in this case? Or How to increase the maximum record... (1 Reply)
Discussion started by: mahish20
1 Replies

8. Shell Programming and Scripting

Maximum command length in bourne shell

Hi, I wanted to know what is the maximum length of command which can be run on a bourne (sh) shell? Where can I find that information? Is it different for different OS flavors? Please help. Thanks, Vineet (10 Replies)
Discussion started by: vineetd
10 Replies

9. Programming

Maximum length of a line

How can I change the maximum length of a programming line in fortran and C (specifically in fortran 77)? Seems the default maximum length is 72 in fortran 77. Thanks. (4 Replies)
Discussion started by: hbar
4 Replies

10. Shell Programming and Scripting

Maximum length of a string

good friends days I would love to know if I can help you know the length of a string example: cadena= "cual es mi largo" echo "cadena : $cadena# cadena :16 (7 Replies)
Discussion started by: tricampeon81
7 Replies
escape(1)							Mail Avenger 0.8.3							 escape(1)

NAME
escape - escape shell special characters in a string SYNOPSIS
escape string DESCRIPTION
escape prepends a "" character to all shell special characters in string, making it safe to compose a shell command with the result. EXAMPLES
The following is a contrived example showing how one can unintentionally end up executing the contents of a string: $ var='; echo gotcha!' $ eval echo hi $var hi gotcha! $ Using escape, one can avoid executing the contents of $var: $ eval echo hi `escape "$var"` hi ; echo gotcha! $ A less contrived example is passing arguments to Mail Avenger bodytest commands containing possibly unsafe environment variables. For example, you might write a hypothetical reject_bcc script to reject mail not explicitly addressed to the recipient: #!/bin/sh formail -x to -x cc -x resent-to -x resent-cc | fgrep "$1" > /dev/null && exit 0 echo "<$1>.. address does not accept blind carbon copies" exit 100 To invoke this script, passing it the recipient address as an argument, you would need to put the following in your Mail Avenger rcpt script: bodytest reject_bcc `escape "$RECIPIENT"` SEE ALSO
avenger(1), The Mail Avenger home page: <http://www.mailavenger.org/>. BUGS
escape is designed for the Bourne shell, which is what Mail Avenger scripts use. escape might or might not work with other shells. AUTHOR
David Mazieres Mail Avenger 0.8.3 2012-04-05 escape(1)
All times are GMT -4. The time now is 05:58 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy