Sponsored Content
Top Forums Shell Programming and Scripting Errexit APPEARS set in subshells Post 302974545 by chebarbudo on Tuesday 31st of May 2016 03:00:55 PM
Old 05-31-2016
Errexit APPEARS set in subshells

Hi there,

Everyone knows that errexit is NOT inherited by subshells. But does anyone know why errexit still appears as set with set +o?

The following example highlights the fact that errexit appears set in a subshell (set +o) even though it's actually unset (it does NOT exit with false).

Code:
$ cat /tmp/test
#!/bin/bash

set -o errexit

_f() {
        set +o | grep errexit
        false
        echo "I'm still here!"
}

_f "$@" && true
_f "$@"
$
$ bash /tmp/test
set -o errexit       <-- errexit appears set         (unexpected)
I'm still here!      <-- but it's actually unset      (expected)
set -o errexit       <-- errexit appears set          (expected)
                     <-- indeed it exited with false  (expected)

Thanks for sharing ideas.

Regards
Santiago
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Killing parent shells from subshells (KSH)

Hi all, I have a shell script which calls other shell scripts, depending on the input. Within a.sh, I have a command which calls b.sh (ie. ksh b.sh) Normally, we use the exit function to terminate a shell. However, if I choose to call exit from b.sh, I will return to the parent shell who... (4 Replies)
Discussion started by: rockysfr
4 Replies

2. UNIX for Dummies Questions & Answers

appears 4 or more time

I have a file like this: 111 AA 100.00 111 AA 200.00 TOTALS 2 300.00 111 285.00 111 ... (0 Replies)
Discussion started by: nickg
0 Replies

3. Shell Programming and Scripting

delimiter appears in field

The typical line of the input file is as follows, 123|abcde|"xyz|mn"|ghelosa|3455hello| The delimiter is |. I need to change it to another delimiter, say ~. For the above line, the output should be: 123~abcde~xyz|mn~ghelosa~3455hello~ The challenge is when | appears in a field, it... (2 Replies)
Discussion started by: derekxu
2 Replies

4. Shell Programming and Scripting

Question regarding shells and subshells when a script is run

I have the following script running with nohup on one of my servers: #!/bin/bash #\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ #set log number #i=1 #\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ #Check if log exits, if so incrememnt log number up so we don't clobber #while... (8 Replies)
Discussion started by: DeCoTwc
8 Replies

5. UNIX for Dummies Questions & Answers

print records where an ID appears more than once

Hi everyone! I have something like the following records in a file: ID: 1 Name: A Age: 23 ID: 2 Name: B ID: 1 Activity: Climbing ID: 3 Name: C ID: 3 Activity: Skating I want to capture the records where the field Age exists AND the records that have the same ID as the one... (4 Replies)
Discussion started by: Atrisa
4 Replies

6. AIX

oracle process appears to die

periodically my oracle 11.2.0.1 listener process 'tnslsnr' seems to crash and disappear ( I am using an AIX 6.1 unix platform ). When this happens I am able to restart my listener ok. However when this happens there is is no stop recorded in my listener log (as there normally would be - hence why I... (1 Reply)
Discussion started by: jimthompson
1 Replies

7. UNIX for Dummies Questions & Answers

Identifying the commands creating subshells

Hi all, This is the basic question. I have read many books which advised to avoid creating sub shells. e.g: use wc -l<filename rather than using cat file|wc -l. So, how to identify whether a command creates subshell or not? so,is it better to use tail -n+1 file in stead of using cat.... (3 Replies)
Discussion started by: pandeesh
3 Replies

8. UNIX for Dummies Questions & Answers

Understanding the concept behind subshells

Can someone post a "for dummies" explanation on how subshells work? Let's say I want to get a couple of pieces of info from the /etc/passwd file and set them as variables to be echo'd back after all data is gathered. something like for i in ${grep 5000 /etc/passwd | cut -d : -f 5}... (5 Replies)
Discussion started by: flyboynm
5 Replies

9. Shell Programming and Scripting

Export variables to subshells

So i have a script that is like this: #!/bin/sh VARA="elementary 1 elementary 2 nursery A nursery B highschool AZ" echo "${ContentOfADifferentSCRIPT}" | sh i do not have control over the script that is inside the variable "${ContentOfADifferentSCRIPT}". however, i know that the... (3 Replies)
Discussion started by: SkySmart
3 Replies
alias(1)							   User Commands							  alias(1)

NAME
alias, unalias - create or remove a pseudonym or shorthand for a command or series of commands SYNOPSIS
/usr/bin/alias [ alias-name [ = string...]] /usr/bin/unalias alias-name... /usr/bin/unalias -a csh alias [ name [def]] unalias pattern ksh alias [-tx] [ name [ = value]...] unalias name... unalias [-a] DESCRIPTION
The alias and unalias utilities create or remove a pseudonym or shorthand term for a command or series of commands, with different func- tionality in the C-shell and Korn shell environments. /usr/bin/alias The alias utility creates or redefines alias definitions or writes the values of existing alias definitions to standard output. An alias definition provides a string value that replaces a command name when it is encountered. An alias definition affects the current shell execution environment and the execution environments of the subshells of the current shell. When used as specified by this document, the alias definition will not affect the parent process of the current shell nor any utility envi- ronment invoked by the shell. /usr/bin/unalias The unalias utility removes the definition for each alias name specified. The aliases are removed from the current shell execution environ- ment. The -a option removes all alias definitions from the current execution environment. csh alias assigns def to the alias name. The assigned def is a list of words that may contain escaped history-substitution metasyntax. name is not allowed to be alias or unalias. If def is omitted, the alias name is displayed along with its current definition. If both name and def are omitted, all aliases are displayed. Because of implementation restrictions, an alias definition must have been entered on a previous command line before it can be used. unalias discards aliases that match (filename substitution) pattern. All aliases may be removed by `unalias *'. ksh alias with no arguments prints the list of aliases in the form name=value on standard output. An alias is defined for each name whose value is given. A trailing space in value causes the next word to be checked for alias substitution. The -t flag is used to set and list tracked aliases. The value of a tracked alias is the full pathname corresponding to the given name. The value becomes undefined when the value of PATH is reset but the aliases remained tracked. Without the -t flag, for each name in the argument list for which no value is given, the name and value of the alias is printed. The -x flag is used to set or print exported aliases. An exported alias is defined for scripts invoked by name. The exit status is non-zero if a name is given, but no value, and no alias has been defined for the name. The aliases given by the list of names may be removed from the alias list with unalias. OPTIONS
The following option is supported by unalias: -a Removes all alias definitions from the current shell execution environment. ksh The following option is supported by alias: -t Sets and lists tracked aliases. OPERANDS
The following operands are supported: alias alias-name Write the alias definition to standard output. unalias alias-name The name of an alias to be removed. alias-name=string Assign the value of string to the alias alias-name. If no operands are given, all alias definitions will be written to standard output. OUTPUT
The format for displaying aliases (when no operands or only name operands are specified) is: "%s=%s " name, value The value string will be written with appropriate quoting so that it is suitable for reinput to the shell. EXAMPLES
Example 1: Modifying a command's output This example specifies that the output of the ls utility is columnated and more annotated: example% alias ls="ls -CF" Example 2: Repeating previous entries in the command history file This example creates a simple "redo" command to repeat previous entries in the command history file: example% alias r='fc -s' Example 3: Specifying a command's output options This example provides that the du utility summarize disk output in units of 1024 bytes: example% alias du=du -k Example 4: Dealing with an argument that is itself an alias name This example sets up the nohup utility so that it can deal with an argument that is itself an alias name: example% alias nohup="nohup " ENVIRONMENT VARIABLES
See environ(5) for descriptions of the following environment variables that affect the execution of alias and unalias: LANG, LC_ALL, LC_CTYPE, LC_MESSAGES, and NLSPATH. EXIT STATUS
The following exit values are returned: 0 Successful completion. alias >0 One of the alias-name operands specified did not have an alias definition, or an error occurred. unalias >0 One of the alias-name operands specified did not represent a valid alias definition, or an error occurred. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Availability |SUNWcsu | +-----------------------------+-----------------------------+ |Interface Stability |Standard | +-----------------------------+-----------------------------+ SEE ALSO
csh(1), ksh(1), shell_builtins(1), attributes(5), environ(5), standards(5) SunOS 5.10 17 Jul 2002 alias(1)
All times are GMT -4. The time now is 11:20 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy