Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / 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=$" "  
使用$@基本上和$*一样,除了IFS设置无效外。有时候,想知道外部参数的数量,可以用$#
  1. #!/bin/bash  
  2. IFS=^  
  3. echo "$*"  
  4. echo "$#"  
运行脚本:
  1. ./test.sh "this is a test" "abc"  
输出为2,不包含第0个参数。