shell脚本入门

本文是Shell编程入门的笔记,涵盖了shell脚本的第一行、变量、内置与位置变量、打印、判断、循环、函数等内容。讲解了如何使用#!/bin/bash指定解释器,变量赋值,if、case条件判断,while和for循环,以及函数定义和参数处理。同时提到了shift命令、getopts获取参数选项以及curl命令的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 最近看了一个shell编程入门的视频课,随手记下一些基础的语法,根据笔记整理出这篇文章,仅供小白入门。

    首先感谢这位东北小哥的视频课程,讲的贼6,传送门http://edu.51cto.com/course/6068.html?source=so,想学shell或想学东北话的同学不能错过。

1. shell脚本的第一行

    第一行一定是以 #! 开头,用来指定shell脚本解释器的路径,说白了就是告诉内核应该用啥东西来解释你这个脚本,好让机器明白要去做啥。视频里这位小哥写的是

#!bin/bash

而在我的工作机器上是

#!/usr/bin/env bash

显然不同机器的脚本解释器路径可能不相同。那么问题来了,我写一个脚本之前该怎么知道这个路径是啥?so easy,先打开现有的脚本瞅瞅~

    写Java或C的同学可能会有在代码的顶部先写上一段注释的习惯,来标明作者、时间、代码的功能等。但在shell脚本中,第一行一定是#!开头的解释器路径,否则脚本将无法执行,即使第一行直接回车,把解释器路径写在第二行。shell脚本中注释的开头是#,但它并不会把第一行当成注释。

2. 变量及其赋值、使用

    shell脚本是弱类型的语言,没有Java、C那样严格的数据类型,也没有作用域的概念。

    变量的定义比较简单粗暴:变量名=变量值 即可。

num=123
name=ershazi

    如上,定义了两个变量,变量num中存的是数字123,name中存的是字符串ershazi。这里又要注意了,等号两边不能有空格,随手写成num = 123是不对的。

    上面这种简单粗暴的方法称为直接赋值。还有一种间接赋值,把用户输入的值赋给变量:

read -p "input a number:" num

这和下面的C++代码是一个道理:

int num = 0;
cout << "input a number:";
cin >> num;

不过由于变量的类型是由值决定的,而不是定义时指定,所以输入abc也会被赋值给num。实际应用中这里很有必要做输入值的校验。   

    使用变量很简单,$变量名 即可。

name=ershazi
echo $name
#输出:ershazi

3. 内置变量与位置变量

    有些与系统配置、linux用户参数有关的变量,默认以变量的形式保存,这些变量最好不要去改动:
    $UID  用户id     $PATH  环境变量

    还有些变量具有特定的写法,返回具有特定含义的值:
    $0 当前脚本本身文件名 $x 第x个参数 $# 参数个数 $@ 所有参数

    $?  上一条命令是否执行成功,成功返回0,失败返回非0值

    $x、$#常用于获取执行脚本时传入的参数和参数个数验证,$?可以与exit x配合使用进行异常分析处理。

4. 打印段落

    脚本中常常会一次输出多行指导用户操作的tips,当然可以通过多次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值