Shell脚本入门-4

news/2024/7/9 22:34:55

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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

实例

以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名:

#!/bin/bash
# author:ethan
# url:www.runoob.com

echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";

为脚本设置可执行权限,并执行脚本,输出结果如下所示:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
执行的文件名:./test.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3

另外,还有几个特殊字符用来处理参数:

参数处理说明
$#传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数。
如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$脚本运行的当前进程ID号
$!后台运行的最后一个进程的ID号
$@与$*相同,但是使用时加引号,并在引号中返回每个参数。
如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$-显示Shell使用的当前选项,与set命令功能相同。
$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
#!/bin/bash
# author:ethan
# url:www.runoob.com

echo "Shell 传递参数实例!";
echo "第一个参数为:$1";

echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示:$*";

执行脚本,输出结果如下所示:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
第一个参数为:1
参数个数为:3
传递的参数作为一个字符串显示:1 2 3

$* 与 $@ 区别:

  • 相同点:都是引用所有参数。
  • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
#!/bin/bash
# author:ethan
# url:www.runoob.com

echo "-- \$* 演示 ---"
for i in "$*"; do
    echo $i
done

echo "-- \$@ 演示 ---"
for i in "$@"; do
    echo $i
done

执行脚本,输出结果如下所示:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
-- $* 演示 ---
1 2 3
-- $@ 演示 ---
1
2
3

在为shell脚本传递的参数中如果包含空格,应该使用单引号或者双引号将该参数括起来,以便于脚本将这个参数作为整体来接收

在有参数时,可以使用对参数进行校验的方式处理以减少错误发生:

if [ -n "$1" ]; then
    echo "包含第一个参数"
else
    echo "没有包含第一参数"
fi

注意:中括号 [] 与其中间的代码应该有空格隔开

转载于:https://my.oschina.net/u/3204727/blog/1631348


http://www.niftyadmin.cn/n/1965483.html

相关文章

Docker初体验——踩过的那些坑!

2018‎年‎3‎月‎6‎日 Docker安装 环境:windows7 安装包:DockerToolbox-17.10.0-ce.exe (下载地址:http://mirrors.aliyun.com/doc...) 坑: //启动包错: Running pre-create checks... (def…

双11购物节火热,谨防木马乘机而入

腾讯电脑管家 2015/11/12 16:240x00 概况近期11.11购物节,无数的网页、软件都充斥着“血拼双11”的广告,这时的电脑桌面如果多了几个双11相关的快捷方式,或者浏览器主页被锁定成推送网购内容的导航网站,你会不会认为这也是正常的…

Android应用安全开发之防范无意识的数据泄露

gh0stbo 2016/01/29 10:160x00 简介OWASP移动安全漏洞Top 10中第4个就是无意识的数据泄漏。当应用程序存储数据的位置本身是脆弱的时,就会造成无意识的数据泄漏。这些位置可能包括剪贴板,URL缓存,浏览器的Cookies,HTML5数据存储&…

HTML基础 结构,标题h1和段落p 写一个三毛语录

先看代码: 1 <!DOCTYPE html>2 <html>3 <head>4 <meta charset"utf-8">5 <title>HTML:基础教程</title>7 </head>8 <body>9 <h1>三毛语录</h1> 10 <p>1.不做不可及的梦&#xff0c;这使我的睡…

Ubuntu 16.04将左侧面板置于底部

ctrlaltt打开终端&#xff0c;输入&#xff1a; gsettings set com.canonical.Unity.Launcher launcher-position Bottom有Bottom和Left两个选择

语音识别技术受追捧,无法独立工作的“速记神器”何时才能成为新亮点?

从当前来看&#xff0c;速记神器确实为特定人群所需。 近日&#xff0c;搜狗召开发布会&#xff0c;正式推出其自研的速记神器——搜狗听写。这是一款能够将语音实时转变成文字的速记工具&#xff0c;拥有转写和听写两种模式&#xff0c;主要面向记者、编辑、作家等文字工作者…

JS判断是否为IE浏览器及IE版本

2019独角兽企业重金招聘Python工程师标准>>> <script type"text/javascript"> if (IEVersion() -1) { window.alert("不是ie浏览器") } else { window.alert("是IE" IEVersion()) } function IEVersion() { var userAgent n…

ubuntu16 修改默认运行级别

1、配置默认运行级别 设置默认界面为命令行&#xff1a; sudo systemctl set-default multi-user.target reboot设置默认界面为图形界面&#xff1a; systemctl set-default graphical.target reboot2、临时切换 图形界面下 临时切换到字符界面&#xff1a;ctrl alt F1 …