bash 脚本编程四 外部参数 IFS


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

  1. #!/bin/bash  
  2. echo "$0"  
  3. echo "$1"  
运行程序
  1. ./test/sh q  

看到:

  1. $ ./test.sh q  
  2. ./test.sh  
  3. q  

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

  1. ./test.sh 'this is a test'  

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

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

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

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

比如下面的脚本:

  1. #!/bin/bash  
  2. echo "$*"  
这样调用:
  1. ./test.sh 'this is a test' 'abc'  
结果显示为:
  1. this is a test abc  
现在设置一下IFS:
  1. !/bin/bash  
  2. IFS=^  
  3. echo "$*"  
结果显示为:
  1. this is a test^abc  

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

  1. IFS=$'\n'  

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

有时候,想知道外部参数的数量,可以用$#
  1. #!/bin/bash  
  2. IFS=^  
  3. echo "$*"  
  4. echo "$#"  
运行脚本:
  1. ./test.sh 'this is a test' 'abc'  
输出为2,不包含第0个参数。

相关内容