Sponsored Content
Top Forums Shell Programming and Scripting BASH: variable and function scope and subscripts Post 302860679 by rse on Monday 7th of October 2013 03:54:08 AM
Old 10-07-2013
Quote:
Originally Posted by cero
... unless you source it a script starts a subshell which terminates when the script ends. That's why functions and variables are not defined after execution (see jims post).
That makes perfect sense to me. I assume the first line in the script, the shebang, opens the new shell for execution.

Again, I edited my first post. Thanks very much!

RSE

p.s. Sorry for the delay, there was an official holiday on thursday and I didn't check from at home.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

$0 scope in function and calling script

Hi folks, I'm just running through an oreilly korn shell book but have witnessed an output difference on my own unix machine and the output provided in the book. Can anyone help? create a script called ascript as follows: function afunc { print in function $0: $1 $2 var1="in... (16 Replies)
Discussion started by: beckett
16 Replies

2. Shell Programming and Scripting

Bash: how to call function having it's name in variable?

Hello. Looking for a method of modularizing my bash script, I am stuck with such a problem. For example, I have: MODULE_NAME="test" FUNCTION_NAME="run" How do I can a function with name test_run? (4 Replies)
Discussion started by: FractalizeR
4 Replies

3. Shell Programming and Scripting

scope of the variable - Naga

Hi All, I am new to unix shell scripting, in the below script "num" is an input file which contains a series of numbers example : 2 3 5 8 I want to add the above all numbers and want the result finally outside the while loop. it prints the value zero instead of the actual expected... (13 Replies)
Discussion started by: nagnatar
13 Replies

4. Shell Programming and Scripting

variable scope

Hi, I want to know about the variable scope in shell script. How can we use the script argument inside the function? fn () { echo $1 ## I want this argument should be the main script argument and not the funtion argument. } also are there any local,global types in shell script? if... (3 Replies)
Discussion started by: shellwell
3 Replies

5. Shell Programming and Scripting

Scope of exported function

Hi I'm hoping someone can tell me how to extend the scope of an exported function in the korn shell. I have written a function in a file that I dot in from my .kshrc file and it works fine. However I would like this function to be available to anyone in a certain group on the machine... (10 Replies)
Discussion started by: steadyonabix
10 Replies

6. UNIX for Dummies Questions & Answers

Bash loops and variable scope

Hi All, I've been researching this problem and I am pretty sure that the issue is related to the while loop and the piping. There are plenty of other threads about this issue that recommend removing the pipe and using redirection. However, I haven't been able to get it working using the ssh and... (1 Reply)
Discussion started by: 1skydive
1 Replies

7. Shell Programming and Scripting

Variable scope in bash

Hello! Before you "bash" me with - Not another post of this kind Please read on and you will understand my problem... I am using the below to extract a sum of the diskIO on a Solaris server. #!/bin/sh PATH=/usr/bin:/usr/sbin:/sbin; export PATH TEMP1="/tmp/raw-sar-output.txt$$"... (3 Replies)
Discussion started by: haaru
3 Replies

8. Programming

Variable Scope in Perl

I have to admit that i have not used Perl at all and this is a singular occasion where i have to patch an existing Perl script. I dearly hope i do not have to do it again for the next 15 years and therefore try to avoid having to learn the programming language in earnest. The OS is AIX 7.1, the... (2 Replies)
Discussion started by: bakunin
2 Replies

9. Shell Programming and Scripting

Bash function using variable in it syntax error

The below bash function uses multiple variables CODING, SAMPLE, SURVEY, andvariant in it. The user selects the cap function and details are displayed on the screen using the $SURVEY variable, the directory is changed to $SAMPLE and the samples.txt is opened so the user can select the sample to... (6 Replies)
Discussion started by: cmccabe
6 Replies

10. UNIX for Beginners Questions & Answers

Bash Variable scope - while loop while reading from a file

Cope sample1: test.sh i=0 echo " Outside loop i = $i " while do i=$(( $i + 1)) echo "Inside loop i = $i " done echo " Out of loop i is : $i " When run output : Outside loop i = 0 Inside loop i = 1 Inside loop i = 2 Inside loop i = 3 Inside loop i = 4 Inside loop i = 5 Inside... (8 Replies)
Discussion started by: Adarshreddy01
8 Replies
RC(8)							    BSD System Manager's Manual 						     RC(8)

NAME
rc, rc.local, rc.shutdown, rc.d/ -- startup and shutdown scripts SYNOPSIS
rc rc.local rc.shutdown rc.d/ DESCRIPTION
rc is the command script which controls the startup of various services, and is invoked by init(8) as part of the process of entering the automatic reboot to multi-user startup, or after the single user mode shell has exited. If init(8) is starting the automatic reboot process, rc is invoked with the argument of 'autoboot'. rc.local is a command script to which local boot-time actions can be added. It is (nearly) the last thing invoked by rc during a normal boot. rc.shutdown is the command script which shuts down various services, and is invoked by shutdown(8) as part of the process of shutting down the system. rc.d/ is the directory which contains various sh(1) scripts, one for each service, which are called by rc at startup, rc.shutdown at shut- down, and as necessary during system operation to stop, start, restart, reload, or otherwise control the service. Operation of rc 1. Source /etc/rc.subr to load various rc.subr(8) shell functions to use. 2. If autobooting, set autoboot=yes and enable a flag (rc_fast=yes), which prevents the rc.d scripts from performing the check for already running processes (thus speeding up the boot process). This rc_fast=yes speedup won't occur when rc is started up after exiting the single-user shell. 3. Invoke rcorder(8) to order the files in /etc/rc.d/ that do not have a ``nostart'' keyword (refer to rcorder(8)'s -s flag), and assigns the result to a variable. 4. Calls each script in turn using run_rc_script() (from rc.subr(8)), which sets $1 to 'start', and sources the script in a subshell. If the script has a '.sh' suffix then it is sourced directly into the current shell. 5. The output from the above steps is sent to a post-processor. If rc_silent is false, then the post-processor displays the output. If rc_silent is true, then the post-processor invokes the command specified in rc_silent_cmd once for each line, without otherwise display- ing the output. Useful values for rc_silent_cmd include ``:'' to display nothing at all, and ``twiddle'' to display a spinning symbol on the console. Regardless of the value of rc_silent, the post-processor saves the output in /var/run/rc.log. Operation of rc.shutdown 1. Source /etc/rc.subr to load various rc.subr(8) shell functions to use. 2. Invoke rcorder(8) to order the files in /etc/rc.d/ that have a ``shutdown'' keyword (refer to rcorder(8)'s -k flag), reverses that order, and assigns the result to a variable. 3. Calls each script in turn using run_rc_script() (from rc.subr(8)), which sets $1 to 'stop', and sources the script in a subshell. If the script has a '.sh' suffix then it is sourced directly into the current shell. Contents of rc.d/ rc.d/ is located in /etc/rc.d. The following file naming conventions are currently used in rc.d/: ALLUPPERCASE Scripts that are 'placeholders' to ensure that certain operations are performed before others. In order of startup, these are: NETWORKING Ensure basic network services are running, including general network configuration (network) and dhclient. SERVERS Ensure basic services (such as NETWORKING, ppp, syslogd, and kdc) exist for services that start early (such as named), because they're required by DAEMON below. DAEMON Before all general purpose daemons such as dhcpd, lpd, and ntpd. LOGIN Before user login services (inetd, telnetd, rshd, sshd, and xdm), as well as before services which might run commands as users (cron, postfix, and sendmail). foo.sh Scripts that are to be sourced into the current shell rather than a subshell have a '.sh' suffix. Extreme care must be taken in using this, as the startup sequence will terminate if the script does. /etc/rc.d/bootconf.sh uses this behav- iour to allow the user to select a different configuration (including /etc/rc.conf) early in the boot. bar Scripts that are sourced in a subshell. The boot does not stop if such a script terminates with a non-zero status, but a script can stop the boot if necessary by invoking the stop_boot() function (from rc.subr(8)). Each script should contain rcorder(8) keywords, especially an appropriate ``PROVIDE'' entry. The scripts are expected to support at least the following arguments: start Start the service. This should check that the service is to be started as specified by rc.conf(5). Also checks if the ser- vice is already running and refuses to start if it is. This latter check is not performed by standard NetBSD scripts if the system is starting directly to multi-user mode, to speed up the boot process. stop If the service is to be started as specified by rc.conf(5), stop the service. This should check that the service is running and complain if it's not. restart Perform a stop then a start. status If the script starts a process (rather than performing a one-off operation), show the status of the process. Otherwise it's not necessary to support this argument. Defaults to displaying the process ID of the program (if running). poll If the script starts a process (rather than performing a one-off operation), wait for the command to exit. Otherwise it's not necessary to support this argument. rcvar Display which rc.conf(5) variables are used to control the startup of the service (if any). Other arguments (such as 'reload', 'dumpdb', etc) can be added if necessary. The argument may have one of the following prefixes to alter its operation: fast Skip the check for an existing running process. Sets rc_fast=yes. force Skips the rc.conf(5) check, ignores a failure result from any of the prerequisite checks, executes the command, and always returns a zero exit status. Sets rc_force=yes. one Skips the rc.conf(5) check, but performs all other prerequisite tests. In order to simplify scripts, the run_rc_command() function from rc.subr(8) may be used. FILES
/etc/rc Startup script called by init(8). /etc/rc.d/ Directory containing control scripts for each service. /etc/rc.local Local startup script. /etc/rc.shutdown Shutdown script called by shutdown(8). /etc/rc.subr Contains rc.subr(8) functions used by various scripts. /etc/rc.conf System startup configuration file. /var/run/rc.log Log file created by rc. SEE ALSO
rc.conf(5), init(8), rc.subr(8), rcorder(8), reboot(8), shutdown(8) Luke Mewburn, "The Design and Implementation of the NetBSD rc.d system", Proceedings of the FREENIX Track: 2001 USENIX Annual Technical Conference, USENIX Association, http://www.usenix.org/publications/library/proceedings/usenix01/freenix01/full_papers/mewburn/mewburn.pdf, June 25-30, 2001. HISTORY
The rc command appeared in 4.0BSD. The /etc/rc.d support was implemented in NetBSD 1.5 by Luke Mewburn <lukem@NetBSD.org>. The post-proces- sor, support for rc_silent, and saving output to a file, was implemented in NetBSD 6.0 by Alan Barrett. BSD
May 14, 2010 BSD
All times are GMT -4. The time now is 02:51 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy