InfoHeap
Tech tutorials, tips, tools and more
Navigation
  • Home
  • Tutorials
    • CSS tutorials & examples
    • CSS properties
    • Javascript cookbook
    • Linux/Unix Command Line
    • Mac
    • PHP
      • PHP functions online
      • PHP regex
    • WordPress
  • Online Tools
    • Text utilities
    • Online Lint Tools
search

Bash shell scripting

  • Bash - add a number to a variable
  • Bash - append text to a variable
  • Bash - how to check if a variable is set
  • Bash - how to compare file timestamps
  • Bash - how to find last command exit status code
  • Bash - how to get main program and current file dir location
  • Bash - how to redirect stderr to stdout or file
  • Bash - how to run custom commands at script exit
  • Bash - how to stop at error
  • Bash - how to use functions - quick tutorial
  • Bash - iterate over array
  • Bash - local and global variables
  • Bash - newline and other escape character in string
  • Bash - pass all arguments from one script to another
  • Bash - set default value if a variable is empty
  • Bash - variables in double quotes vs without quotes
  • Bash associative array tutorial
  • Bash check if file begins with a string
  • Bash shell - check if file or directory exists
  • Can global variables be modified in bash function?
  • Find memcache request hit rate on linux command line
  • How to return a value from bash function
  • Iterate over specific file extension in a dir in shell script
  • Linux - Yesterday's Date in YYYYMMDD format
  • bash - extract urls from xml sitemap
  • bash - how to use regex in if condition
 
  • Home
  • > Tutorials
  • > Bash shell scripting

Can global variables be modified in bash function?

By admin on Dec 17, 2015

Global variables can be accessed in bash function without declaring anything and when these are modified the behaviour depend on whether function is called in sub-shell mode or inline mode. Sub-shell mode can be called with $(func_name) and inline can be just called with func_name. In sub-shell mode variables modified inside don’t impact variables outside with same name.

#!/bin/bash
f1 () {
  echo "in f1 x=$x"
  x=2
}

x=1
f1
echo "after call x=$x"

x=1
ret=$(f1)
echo "ret=$ret"
echo "after call x=$x"
in f1 x=1
after call x=2
ret=in f1 x=1
after call x=1
Env: GNU bash, version 4.2.46

Note that in sub-shell mode, echo output is not printed on stdout.

Suggested posts:

  1. Bash – local and global variables
  2. Bash – how to use functions – quick tutorial
  3. Bash – variables in double quotes vs without quotes
  4. How to return a value from bash function
  5. Javascript local and global variables
  6. Bash – how to redirect stderr to stdout or file
  7. How to specify environment variable for a command on Linux
  8. Bash – set default value if a variable is empty
Share this article: share on facebook share on linkedin tweet this submit to reddit
Posted in Tutorials | Tagged Bash shell scripting, Devops Interview Questions, Linux Interview Questions, Tutorials

Follow InfoHeap

facebook
twitter
googleplus
  • Browse site
  • Article Topics
  • Article archives
  • Recent Articles
  • Contact Us
  • Omoney
Popular Topics: Android Development | AngularJS | Apache | AWS and EC2 | Bash shell scripting | Chrome developer tools | CSS | CSS cookbook | CSS properties | CSS Pseudo Classes | CSS selectors | CSS3 | CSS3 flexbox | Devops | Git | HTML | HTML5 | Java | Javascript | Javascript cookbook | Javascript DOM | jQuery | Kubernetes | Linux | Linux/Unix Command Line | Mac | Mac Command Line | Mysql | Networking | Node.js | Online Tools | PHP | PHP cookbook | PHP Regex | Python | Python array | Python cookbook | SEO | Site Performance | SSH | Ubuntu Linux | Web Development | Webmaster | Wordpress | Wordpress customization | Wordpress How To | Wordpress Mysql Queries

Copyright © 2023 InfoHeap.

Powered by WordPress