shell脚本之基础入门

本文介绍了Shell的基础知识,包括Shell的定义、如何编写第一个Shell脚本、执行脚本的几种方式、变量的使用以及环境变量的设置。通过示例详细讲解了变量赋值、特殊用法以及预设变量等内容,帮助读者快速掌握Shell脚本编程。
摘要由CSDN通过智能技术生成

Shell 教程

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。


第一个shell脚本

第一步:创建脚本文件

使用touch命令新建一个文件 demo.sh,扩展名为 sh(sh代表shell),扩展名可以清楚知道是脚本文件,没有也无影响。

第二步:编写脚本文件内容

输入一些代码,第一行一般是这样:

#!/bin/bash

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。有三种shell解释器,分别是sh、ash、bash。

echo "Hello World !"

echo 命令用于向窗口输出文本,其中#后为注释内容。

第三步:权限修改

一般启动脚本时要赋予脚本文件执行权限  使用权限修改命令chmod

chmod 777 demo.sh

或者仅加上执行权限  

第四步:执行脚本

第一种执行方式 

./demo.sh

第二种执行方式

bash demo.sh

 第三种执行方式

. demo.sh

输出结果都为

不同点:./和bash执行过程基本一致,后者指定使用bash解释器执行脚本,脚本中的#!不起作用前者首先检测#!,使用指定的shell,如果没有则使用默认的shell,用这两者去执行会在后台启动一个新的shell去执行脚本,而用. 去执行则由当前的shell去解释执行脚本。

 shell中的变量

shell中定义变量无需数据类型  期间不可加空格符号    取变量值为 $变量名

#!/bin/bash
# #!用于指定当前脚本文件的shell解释器  不写默认
num=100

i=num
#可以赋值给另一个变量
echo "$i"
# $变量为取变量的值
echo "$num"
#打印输出变量的值
unset num
#清除变量
echo "$num"
#变量已经清除  输出空
read string
#从键盘是输入一个字符串赋值给变量string
echo "str=$string"
#输出字符串
readonly val=10
#创建一个只读的变量 不可清除修改 只能在定义时初始化
val=100

输入 hello     输出结果如下: 

 环境变量的设置   

 语法(尽量大写)

 VAR=value
 export VAR
  • 在终端上输入环境变量为临时变量 当会话关闭或者重启时消失
  • 一般在 ~/.bashrc或者/etc/porfile文件中  允许用户更改  更改后不会立即生效 可以使用source命令

环境变量等于程序设计语言的全局变量 可以在所有的shell中使用

 预设变量

$0为进程名字  $1  $2 ...  $9    为输入的参数

当需要传入10个以上时可以使用 ${10} 依此类推 

$#:保存命令行传入的参数个数但不包括$0

$*或者$@为所有命令行传入的参数但不包括$0

$$:获取当前进程号

$?:返回上一条命令的执行结果  成功为0  失败则非0

示例

echo "$0"
echo "$1"
echo "$2"
echo "$#"
echo "$*"
echo "$$"

ls aaa
#目录下没有这个文件
echo "$?"
ls demo.sh
echo "$?"

输出如下:   想查看进程号可使用read等待输入打开一个新的会话使用ps查看对应的进程号

 脚本变量的特殊用法

""(双引号):包含的变量会被解释

'' (单引号):包含的变量会被当做字符串解释

``(ESC下):反引号的内容作为系统命令,并执行其内容,可以替换输出为一个变量

$ echo " today is `date`"

输出结果:

 \转义字符:同c语言\n \t \r \a 等echo命令需加 -e转义

(命令序列):由子shell完成,不影响当前shell中的变量

   {命令序列}  :在当前shell中执行,会影响当前变量

脚本代码

#!/bin/bash
# #!用于指定当前脚本文件的shell解释器  不写默认

name="lisi"
string1="hello,$name"
#双引号里面的特殊字符,会使用其特殊含义
string2='hello,$name'
#单引号里当成字符串解释

echo $string1
echo $string2

echo -e "this \n is\t a \n text"

num=100
(num=999; echo "1 $num")
echo "2 $num"

运行结果: 

 

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值