博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell编程基础
阅读量:5112 次
发布时间:2019-06-13

本文共 1569 字,大约阅读时间需要 5 分钟。

 

1.cat /etc/shells #查看系统中安装的 shell

 

2.eg1.

#!/bin/bash

echo "Hello World !"

 

3.Shell 脚本的执行:

chmod +x ./hello.sh   #使脚本具有执行权限

./hello.sh    #执行脚本

/bin/sh /root/hello.sh #作为解释器参数运行,不需要在第一行指定解释器信息(shell种类),写了也不生效

简写为sh /root/hello.sh

 

4.shell变量定义和引用:

your_name="itcast  .  cn" #变量名和等号之间不能有空格

echo $your_name

echo ${your_name}

变量名的命名须遵循如下规则:

l 首个字符必须为字母( a-z, A-Z)
l 中间不能有空格,可以使用下划线( _)
l 不能使用标点符号
l 不能使用 bash 里的关键字(可用 help 命令查看保留关键字)

readonly variable_name 只读

unset variable_name 删除

 

5.变量类型:

局部变量、环境变量(set #查看当前环境变量)、shell变量(shell 程序设置的特殊变量)。

 

6.参数传递:

在执行 Shell 脚本时, 可以向脚本传递参数。

脚本内获取参数的格式为: $n n 代表一个数字, 1 为执行脚本的第一个参
数, 2 为执行脚本的第二个参数,以此类推…… $0 表示当前脚本名称

eg.  ./test.sh 1 2 3

注:特殊字符:

$#

传递到脚本的参数个数

$*

以一个单字符串显示所有向脚本传递的参数。

$$

脚本运行的当前进程 ID

$!

后台运行的最后一个进程的 ID

$@

$*相同,但是使用时加引号,并在引号中返回每个参数。

$?

显示最后命令的退出状态。 0 表示没有错误,其他任何值表明有错误。

7.$*$@区别

 

相同点: 都表示传递给脚本的所有参数。

不同点:
不被" "包含时, $*$@都以$1 $2… $n 的形式组成参数列表。
" "包含时, "$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式组成一个整串; "$@" 会将各个参数分开,以"$1" "$2" … "$n" 形式组成一个参数列表。

 

8.Shell 运算符

 

支持包括:算术、关系、 布尔、字符串等运算符。 原生 bash 不支持简单的数学运算,但是可以通过其他命令来实现。

 

eg.   echo `expr $a + $b`  

echo `expr $b - $a` 

echo `expr $a \* $b` 

echo `expr $b / $a`

此外,还可以通过(()) $[]进行算术运算。

count=1

((count++))

echo $count

a=$((1+2))

a=$[1+2]

 

9.流程控制:

 (1)if判断:-eq, -nq, -gt, -lt, -ge, -le

(2)for循环:注:for(())后面的分号,可省略。

(3)while循环:

(4)case分支:

(5)函数:

  所有函数在使用前必须定义,这意味着必须将函数放在脚本开始部分。

  可以带 function fun()定义,也可以直接 fun() 定义,不带任何参数。

  参数返回,可以显示加 return ,如果不加,将以最后一条命令运行结

果,作为返回值。 return 后跟数值 n(0-255)。

  当 n>=10 时,需要使用${n}来获取参数。

 

示例见以下2张图:

-----

 

转载于:https://www.cnblogs.com/mediocreWorld/p/10928400.html

你可能感兴趣的文章
【BZOJ2286】【SDOI2011】消耗战 [虚树][树形DP]
查看>>
【Foreign】Game [博弈论][DP]
查看>>
3.13上午 听力BLOCK3、4 写作形容词,连字符,名词动化大词
查看>>
pycharm 安装 tensorflow
查看>>
C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
查看>>
一次失败的项目经理招聘经验
查看>>
怎么保存退出vi编辑
查看>>
Java泛型的基本使用
查看>>
智力逻辑题
查看>>
SpringBoot前后端分离Instant时间戳自定义解析
查看>>
开发一个简单的 Vue 弹窗组件
查看>>
1076 Wifi密码 (15 分)
查看>>
rsync
查看>>
java中的IO操作总结
查看>>
noip模拟赛 党
查看>>
bzoj2038 [2009国家集训队]小Z的袜子(hose)
查看>>
Java反射机制及其Class类浅析
查看>>
Postman-----如何导入和导出
查看>>
面试题17:合并两个排序的链表
查看>>
Jmeter HTTPS接口测试的证书导入
查看>>