bash 脚本编程4 外部参数 IFS

bash 脚本编程四 外部参数 IFS

通过$0可以获取传递来的第一个参数,就是脚本自己,$1可以获得第二个参数,比如:

#!/bin/bash
echo "$0"
echo "$1"
运行程序

./test/sh q

看到:

$ ./test.sh q
./test.sh
q

传递参数的时候,如果是字符串,可以用单引号或者双引号包起来,表示这是一个完整的参数:

./test.sh 'this is a test'


既然扯到双引号,要注意,如果在双引号里使用了变量,也会用其值替换,比如:

./test.sh "$HOME"
./test.sh
/home/chenshu
$HOME的值被用来作为第二个参数。

同样,这里用上单引号就不会取值。



$* 值得是从第1个参数开始的所有参数,如果没有指定间隔字符,默认用空格。

比如下面的脚本:

#!/bin/bash
echo "$*"

这样调用:

./test.sh 'this is a test' 'abc'
结果显示为:

this is a test abc

现在设置一下IFS:

!/bin/bash
IFS=^
echo "$*"
结果显示为:

this is a test^abc

如果IFS设置为换行符,需要这样写:

IFS=$'\n'

使用$@基本上和$*一样,除了IFS设置无效外。


有时候,想知道外部参数的数量,可以用$#

#!/bin/bash
IFS=^
echo "$*"
echo "$#"
运行脚本:

./test.sh 'this is a test' 'abc'
输出为2,不包含第0个参数。