Bash Special Parameters Explained with 4 Example Shell Scripts
来源:互联网 发布:mac怎么使用搜狗 编辑:程序博客网 时间:2024/05/20 09:24
As part of our on-going bash tutorial series, we discussed about bash positional parameters in our previous article. In this article let us discuss about the bash special parameters with few practical shell script examples.
Some of the bash special parameters that we will discuss in this article are: $*, $@, $#, $$, $!, $?, $-, $_
To access the whole list of positional parameters, the two special parameters $* and $@ are available. Outside of double quotes, these two are equivalent: Both expand to the list of positional parameters starting with $1 (separated by spaces).
Within double quotes, however, they differ: $* within a pair of double quotes is equivalent to the list of positional parameters, separated by the first character of IFS “$1c$2c$3…”.
$@ within a pair of double quotes is equivalent to the list of positional parameters, separated by unquoted spaces, i.e., “$1″ “$2″..”$N”.
Example 1: Use Bash $* and $@ to Expand Positional Parameters
This example shows the value available in $* and $@.
First, create the expan.sh as shown below.
$ cat expan.sh#!/bin/bashexport IFS='-'cnt=1# Printing the data available in $*echo "Values of \"\$*\":"for arg in "$*"do echo "Arg #$cnt= $arg" let "cnt+=1"donecnt=1# Printing the data available in $@echo "Values of \"\$@\":"for arg in "$@"do echo "Arg #$cnt= $arg" let "cnt+=1"done
Next, execute the expan.sh as shown below to see how $* and $@ works.
$ ./expan.sh "This is" 2 3Values of "$*":Arg #1= This is-2-3Values of "$@":Arg #1= This isArg #2= 2Arg #3= 3
- The above script exported the value of IFS (Internal Field Separator) with the ‘-’.
- There are three parameter passed to the script expan.sh $1=”This is”,$2=”2″ and $3=”3″.
- When printing the each value of special parameter “$*”, it gives only one value which is the whole positional parameter delimited by IFS.
- Whereas “$@” gives you each parameter as a separate word.
Example 2: Use $# to Count Positional Parameters
$# is the special parameter in bash which gives you the number of positional parameter in decimal.
First, create the arithmetic.sh as shown below.
$ cat arithmetic.sh#!/bin/bashif [ $# -lt 2 ]then echo "Usage: $0 arg1 arg2" exitfiecho -e "\$1=$1"echo -e "\$2=$2"let add=$1+$2let sub=$1-$2let mul=$1*$2let div=$1/$2echo -e "Addition=$add\nSubtraction=$sub\nMultiplication=$mul\nDivision=$div\n"
If the number of positional parameters is less than 2, it will throw the usage information as shown below,
$ ./arithemetic.sh 10Usage: ./arithemetic.sh arg1 arg2
Example 3: Process related Parameters – $$ and $!
The special parameter $$ will give the process ID of the shell. $! gives you the process id of the most recently executed background process.
The following script prints the process id of the shell and last execute background process ID.
$ cat proc.sh#!/bin/bashecho -e "Process ID=$$"sleep 1000 &echo -e "Background Process ID=$!"
Now, execute the above script, and check the process id which its printing.
$ ./proc.shProcess ID=9502Background Process ID=9503$ ps PID TTY TIME CMD 5970 pts/1 00:00:00 bash 9503 pts/1 00:00:00 sleep 9504 pts/1 00:00:00 ps$
Example 4: Other Bash Special Parameters – $?, $-, $_
- $? Gives the exit status of the most recently executed command.
- $- Options set using set builtin command
- $_ Gives the last argument to the previous command. At the shell startup, it gives the absolute filename of the shell script being executed.
$ cat others.sh#!/bin/bashecho -e "$_"; ## Absolute name of the file which is being executed/usr/local/bin/dbhome # execute the command.#check the exit status of dbhomeif [ "$?" -ne "0" ]; then echo "Sorry, Command execution failed !"fiecho -e "$-"; #Set options - hBecho -e $_ # Last argument of the previous command.
In the above script, the last echo statement “echo -e $_” ($ underscore) also prints hB which is the value of last argument of the previous command. So $_ will give the value after expansion
$ ./others.sh./others.sh/home/oracleSorry, Command execution failed !hBhB
- Bash Special Parameters Explained with 4 Example Shell Scripts
- Bash Special Parameters
- 【Linux】bash shell scripts
- bash shell 中special params
- Writing Robust Bash Shell Scripts
- How to Prevent SQL Injection Attack (Explained with an Example)
- Using Bash shell scripts for function testing
- Reverse Shell with Bash
- LINUX(4) shell scripts
- Debug your shell scripts with bashdb
- Bash Scripts
- Special Parameters之一
- Linux bash shell special characters and script syntax.
- A quick guide to writing scripts using the bash shell
- C Linked List Data Structure Explained with an Example C Program
- shell scripts
- shell scripts
- Shell Scripts
- java swing的树操作(增删改)
- select server 实现
- 高通平台环境搭建,编译,系统引导流程分析
- MathType works with...
- [C/CPP][2012-06-16]new 与 malloc 的区别
- Bash Special Parameters Explained with 4 Example Shell Scripts
- Xcode 4透過Ad-Hoc發佈App給其它裝置測試使用
- android 属性中src和background的区别
- 未知命令'tkprof ‘。。。。。。其余行忽略
- 找出数组和最大的连续子序列
- 在bochs上运行的第一个操作系统(Windows版)
- 利用AppFace美化VC程序(对话框或文档视图结构)
- Linux日志
- java swing的背景图片按比例缩放