As a general rule: do not change directories inside a script at all (for exactly this reason, to avoid this confusion). Whenever you work on files make sure you always use absolute pathes like this:
The same goes for all other filenames. This way your script will work regardless of where you started it. If you work on several files using a variable for the directory part ensures they all land in the same place. The absolute worst you can do, though, is to use relative pathes:
If you ever find that in anyones code: have them promise never to write any shell script again. This is a surefire recipe for disaster because the script will (maybe) work if you call it from one directory and fail if you call it from another.
In general the script you call inherits the environment from its calling process - the command shell you used to call it. "Envrionent" means not only the values for variables (all that have been "export"ed before) like PATH, TZ (timezone), LANG, etc.. but also the current directory and similar things. It is good practice to make your script independent from this environment by setting it to a certain state except for the few variables where you explicitly want this effect to take place. This includes (but is not limited to) making it independent of the current path it was called from.
I tried to cat a file to another user that was logged in, but I received an error message that displayed something like:
%cat funny > /dev/ttyp3
zsh: permission denied: /dev/ttyp3
Thank you all for your help (1 Reply)
The behavior of the following 2 operations is unexpected. K1 and K2 are files here :-
1) cat < K1 K2
The above operation should actually display contents of the both files.
But it gives the contents of K2 only. How is that ?
2) cat > K1 K2
Above operation takes the contents of... (2 Replies)
Hello,
So I sorted my file as I was supposed to:
sort -n -r -k 2 -k 1 file1 | uniq > file2
and when I wrote
> cat file2
in the command line, I got what I was expecting, but in the script itself
...
sort -n -r -k 2 -k 1 averages | uniq > temp
cat file2
It wrote a whole... (21 Replies)
Hello members,
I get an unexpected "end of file" error while trying to execute the following piece of code in the bash / ksh shell. I'm assuming the problem is with using the "execute immediate statement"
#! /bin/bash
tname="table"
for i in *
do
sqlstr="create table $tname$i as select... (3 Replies)
All,
I have a requirement to write a script where I check for Input redirection when the script was executed, based on which I handle my logic. Below is the example:
my.script
#! /bin/ksh
# Not sure how to frame the if condition below
if ; then
echo "Input Redirected from a file"
... (7 Replies)
Hello all,
I have a for loop executing in a script that I want to redirect STDOUT to screen and to file, while directing STDERR to the bit bucket. Here is the general sentax of what I'm doing:
for i in thingy
do
some_command ${i}
done 1>&1 | tee ${LOGFILE} 2> /dev/null
What I am... (2 Replies)
Hi,
#!/bin/bash
while ;
do
rm -f /tmp/pipe
mkfifo /tmp/pipe
./yuv4mpeg_to_v4l2 < /tmp/pipe &
mplayer tom_and_jerry.mp4 -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe
sleep 65;
done
When I run this - after mplayer finishes playing video it says - Exiting... (End of... (2 Replies)
Hi,
when I try to redirect input and the command is described as a string within an array redirection does not work. why?
#!/bin/bash
dir=("tail < ./hello.txt")
tail < ./hello.txt #works
${dir} #does not work (2 Replies)
Discussion started by: heinzel
2 Replies
LEARN ABOUT HPUX
nohup
nohup(1) General Commands Manual nohup(1)NAME
nohup - run a command immune to hangups
SYNOPSIS
command [arguments]
DESCRIPTION
executes command with hangups and quits ignored. If output is not redirected by the user, both standard output and standard error are sent
to If is not writable in the current directory, output is redirected to otherwise, fails. If a file is created, the file's permission bits
will be set to
If output from is redirected to a terminal, or is not redirected at all, the output is sent to
EXTERNAL INFLUENCES
Environment Variables
determines the language in which messages are displayed.
If is not specified in the environment or is set to the empty string, the value of is used as a default for each unspecified or empty vari-
able. If is not specified or is set to the empty string, a default of "C" (see lang(5)) is used instead of
If any internationalization variable contains an invalid setting, behaves as if all internationalization variables are set to "C". See
environ(5).
International Code Set Support
Single- and multi-byte character code sets are supported.
EXAMPLES
It is frequently desirable to apply to pipelines or lists of commands. This can be done only by placing pipelines and command lists in a
single file, called a shell script. To run the script using
features apply to the entire contents of file. If the shell script file is to be executed often, the need to type can be eliminated by
setting execute permission on file. The script can also be run in the background with interrupts ignored (see sh(1)):
file typically contains normal keyboard command sequences that one would want to continue running in case the terminal disconnects, such
as:
WARNINGS
Be careful to place punctuation properly. For example, in the command form:
applies only to command1. To correct the problem, use the command form:
Be careful of where standard error is redirected. The following command may put error messages on tape, making it unreadable:
whereas
puts the error messages into file
EXIT STATUS
The following exit values are returned:
The command specified by
command was found but could not be invoked
An error occurred in the nohup utility or the specified
command could not be found
Otherwise, the exit status of nohup will be that of the command specified.
SEE ALSO chmod(1), nice(1), sh(1), signal(5).
STANDARDS CONFORMANCE nohup(1)