首页 > 系统相关 >Linux - shell 脚本基础

Linux - shell 脚本基础

时间:2023-03-07 18:58:00浏览次数:27  
标签:脚本 do shell 变量 demo echo Linux

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

shell 脚本是为 shell 编写的脚本程序,Linux 的 shell 编程种类较多,比如:

  • /bin/sh
  • /bin/bash
  • /bin/zsh

通常情况下,sh 和 bash 是不区分的,下文以 bash 为例。

命名规则

  • 命名只能使用英文字母、数字和下划线,首字符不能以数字开头
  • 不能包含空格
  • 不能使用标点符号
  • 不能使用 bash 内的关键字(可用 help 命令查看保留关键字)

定义与使用变量

# 定义变量
$ name="shell"
# 使用变量
$ echo hello $name
hello shell

# 定义只读变量
$ a=1
$ readonly a
$ echo $a
1
# 重新赋值就会报错
$ a=2
bash: a: readonly variable

# 删除变量
$ b=2
$ echo $b
2
$ unset b  # 删除
$ echo $b

# 无法删除只读变量
$ unset a
bash: unset: a: cannot unset: readonly variable

变量只作用于当前窗口,关掉窗口重新打开,变量就失效了,对只读变量同样有效。

变量类型

  • 字符串: a="123"
  • 拼接字符串: b="$a, 456"
  • 数组: values=(v1 v2 v3)
    • 取单个值: v2=${values[1]}
    • 取全部值: echo ${values[*]}
    • 添加元素: values[3]=4

基本运算

$ a=10
$ b=20

# 严格遵守空格
$ expr $a + $b  # 30
$ expr $a - $b  # -10
$ expr $a \* $b # 200; 乘号需要转义
$ expr $b / $a  # 2;取商
$ expr $a % $b  # 10;取余

# 两数相加其他写法
$ echo `expr $a + $b`
$ echo $(($a+$b))
$ echo $[$a+$b]

$ if [ $a == $b ]; then echo true; else echo flase; fi  # false
$ if [ $a != $b ]; then echo true; else echo flase; fi  # true
  • -eq:相等
  • -ne:不等
  • -gt:大于
  • -lt:小于
  • -ge:大于等于
  • -le:小于等于

控制语句

$ if condition;
> then
> 	 commands;
> elif condition;
> then
> 	 commands;
> else
> 	 commands;
> fi

示例:两数比较大小

$ a=1
$ b=2
$ if [ $a -eq $b ];
> then 
>   echo "equal";
> elif [ $a -lt $b ];
> then
>   echo "less than";
> else 
>   echo "greater than";
> fi
less than

for 循环

# 方式一
$ for var in var1 var2 var3
> do
>  	commands
> done

# 方式二
$ for ((i=1; i<j; i++))
> do
>  	commands
> done

示例:逐行打印文件内容

$ for i in ${cat hotWords};
> do
>  	echo $i;
> done

while 循环

$ while condition
> do
>  	commands;
> done

示例:递减 & 循环读取并打印内容

# 例 1: 递减
$ while (($a>=0)); 
> do 
>  	echo $a; 
>  	let "a--"; # let 计算表达式
> done

# 例 2: 循环读取文件内容并打印
# read 命令用于从终端或者文件中读取输入指令
$ while read line;
> do 
>  	echo $line;
> done < hotWords

以脚本方式运行程序

$ echo "echo demo" > demo

# 运行 sh 脚本方式一
$ sh demo
demo

# 运行方式二; 需要先添加可执行权限
$ chmod +x demo
$ ./demo
demo

脚本参数传递

  • $0 脚本名称
  • $1~$n 获取参数
  • $# 传递到脚本的参数个数
  • $$ 脚本运行的进程 ID
  • $* 以一个单字符串显示所有向脚本传递的参数
  • $? 显示最后命令的退出状态,非 0 都表示有错误
$ cat demo
echo "脚本名称:$0"
echo "参数一值:$1"
echo "参数个数:$#"
echo "进程ID:  $$"
echo "整串参数:$*"
echo "退出状态:$?"

$ sh demo 1 2 3 4 5 6
脚本名称:demo
参数一值:1
参数个数:6
进程ID:  22173
整串参数:1 2 3 4 5 6
退出状态:0

标签:脚本,do,shell,变量,demo,echo,Linux
From: https://www.cnblogs.com/abeelan/p/17189156.html

相关文章

  • Linux - 设置环境变量
    PATH变量是一个路径列表,以:隔开;如果可执行程序所在的目录在PATH变量路径列表里,那么输入命令时可以省略路径路径列表前面的路径为优先匹配路径,匹配到即停止,可以用来......
  • Linux - 本机与服务器文件互传(rz&sz)
    软件版本:secureCRTVersion8.7.3(build2279)rz和sz都是使用Zmodem文件传输协议。rz:ReceiveZmodemsz:SendZmodem#centOS安装命令$yum-yinstal......
  • Linux - 常用文本编辑命令
    Linux常用文本编辑命令汇总sort对文本内容进行排序。常用参数:-b:忽略每行左侧的空白字符-n:按数字大小排序-V:按照数字版本排序-h:根据存储容量排序(KB、MB、GB)-r:倒......
  • shell常用的方法
    Shell数组:关联数组使用declare命令来声明,语法格式如下:declare-Asitesite["google"]="www.google.com"site["runoob"]="www.runoob.com"site["taobao"]="www.taobao.......
  • 一些有趣的VBS脚本
    一些实用的VBS脚本截取屏幕并将截图保存到剪贴板WithCreateObject("Word.Basic").Sendkeys"{prtsc}".FileQuit'.AppCloseEndWithMsgbox"已将屏幕截取到剪贴......
  • QT Linux下编译qwt3d
    原文链接 1、从下面网址下载bugfix版本的qwtplot3dhttps://sourceforge.net/p/qwtplot3d/code/HEAD/tree/branches/multiple_curves_0_2_x/  2、解压刚刚下载的......
  • Linux安装MySQL
    演示系统:CentOS-7-x86_64。一、软件下载线上下载:MySQLProductArchives某度下载:wget下载:wgethttps://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.30-1.el7.x86_6......
  • Linux(Centos7)下rpm方式安装MySQL
    1.卸载已有MySQL1.1.查看是否已安装mysqlrpm-qa|grep-imysql如果系统已安装,请卸载删除。1.2.删除MySQL删除命令:rpm-e--nodeps包名rpm-evmysql-......
  • linux基本功系列之mv命令实战
    前言linux常用命令之文件管理命令,目前已经进行到第10个,今天我们一起来看看mv命令。日常工作中,我们把文件移走或者改名都是用的mv命令1、MV命令的介绍mv命令来自于英文单词mo......
  • Linux基础命令使用
    1.CentOS安装和卸载Python3卸载python3rpm-qa|greppython3|xargsrpm-ev--allmatches--nodeps卸载pyhton3whereispython3|xargsrm-frv删除所有残余文件......