Is there a maximum length for a shell script command?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Is there a maximum length for a shell script command?
# 1  
Old 08-05-2012
Is there a maximum length for a shell script command?

Is there a maximum length for a shell script command? How can I detect that in my OS?

For example, if I have something like:

command A | command B | command C | awk '{print $1 $2 $3 $4 $5}'

then can we break the commands and also the arguments inside awk ?

Thanks
# 2  
Old 08-05-2012
I don't know which is your OS, but try with:

Code:
getconf ARG_MAX

--
Bye
# 3  
Old 08-05-2012
I'm using Red Hat (Scientific Linux).

getconf ARG_MAX

gives

131072

What about breaking command line?
# 4  
Old 08-05-2012
Hi,

Code:
command A >outa
<outa command B >outb
<outb command C >outc
cat >script.awk <<"EOF"
{print $1 $2 $3 $4 $5}
EOF
awk -f script.awk outc

# 5  
Old 08-05-2012
Quote:
Originally Posted by hbar
I'm using Red Hat (Scientific Linux).

getconf ARG_MAX

gives

131072
Which should be enough, shouldn't it? Smilie

Quote:
What about breaking command line?
The sequence \<newline> is what you're looking for. To get <newline>, you obviously press ENTER.

Be careful: \<newline> works, "\<newline>" works, but '\<newline>' doesn't.

So:
Code:
lem@biggy:/tmp$ echo A\
> B\
> C
ABC
lem@biggy:/tmp$ echo "A\
> B\
> C"
ABC
lem@biggy:/tmp$ echo 'A\
> B\
> C'
A\
B\
C

--
Bye
# 6  
Old 08-05-2012
Quote:
Originally Posted by hbar
Is there a maximum length for a shell script command? How can I detect that in my OS?

For example, if I have something like:

command A | command B | command C | awk '{print $1 $2 $3 $4 $5}'

then can we break the commands and also the arguments inside awk ?

Thanks
Why are you asking? What problem are you trying to solve or prevent?

Regards,
Alister
# 7  
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..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
Login or Register to Ask a Question