Shell 传递参数

Shell 传递参数

  咱们能够在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$nn 表明一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…bash

#!/bin/bash
echo "执行的文件是:$0"
echo "第一个参数: $1"
echo "第二个参数:$2"
echo "第三个参数:$3"
echo "传递的参数个数: $#"
echo "以一个单字符串显示全部向脚本传递的参数: $*"
echo "脚本运行的当前进程ID号: $$"
echo "后台运行的最后一个进程的ID号: $!"
echo "是使用时加引号,并在引号中返回每一个参数:$@"
echo "显示Shell使用的当前选项,与set命令功能相同。 $-"
echo "显示最后命令的退出状态。0表示没有错误,其余任何值代表有错误: $?"

#将param.sh脚本变为可执行
chmod +x ./param.sh
#执行脚本
./param.sh A B C D E F G 猪八戒 孙悟空 1 2 3 4 5 6 http://www.nihao.com

#输出内容

  执行的文件是:./param.sh
  第一个参数: A
  第二个参数:B
  第三个参数:C
  传递的参数个数: 16
  以一个单字符串显示全部向脚本传递的参数: A B C D E F G 猪八戒 孙悟空 1 2 3 4 5 6 http://www.nihao.com
  脚本运行的当前进程ID号: 14621
  后台运行的最后一个进程的ID号:
  是使用时加引号,并在引号中返回每一个参数:A B C D E F G 猪八戒 孙悟空 1 2 3 4 5 6 http://www.nihao.com
  显示Shell使用的当前选项,与set命令功能相同。 hB
  显示最后命令的退出状态。0表示没有错误,其余任何值代表有错误: 0spa

 

 

$* 与 $@ 区别:code

  • 相同点:都是引用全部参数。
  • 不一样点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 一、二、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)
#!/bin/bash
echo "以一个单字符串显示全部向脚本传递的参数: $*"
echo "-- \$* 演示--"
for i in "$*"; do
        echo $i
done
echo "-- \$@ 演示 ---"
echo "是使用时加引号,并在引号中返回每一个参数:$@"
for i in "$@"; do
        echo $i
done

#执行脚本:
chmod +x ./param.sh
./param.sh a b c d 
#脚本输出
以一个单字符串显示全部向脚本传递的参数: a b c d
-- $* 演示--
a b c d
-- $@ 演示 ---
是使用时加引号,并在引号中返回每一个参数:a b c d
a
b
c
d
相关文章
相关标签/搜索