shell入门语法

参考网站:https://www.runoob.com/linux/linux-shell.html

第一个shell脚本

#!/bin/bash
echo "Hello World !"

Shell 变量

定义规则:
  • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
  • 中间不能有空格,可以使用下划线(_)
  • 不能使用标点符号
  • 不能使用bash里的关键字(可用help命令查看保留关键字)
变量类型
  • 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
  • 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
  • shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行。
变量示例
RUNOOB
LD_LIBRARY_PATH
_var
var2
使用变量
your_name="qinjx"
# 只读变量、unset 命令不能删除只读变量
# readonly your_name
echo $your_name
echo ${your_name}
# unset 命令可以删除变量
unset variable_name
# 变量删除输出为空
echo $variable_name

## -----------------------------------
for skill in Ada Coffe Action Java; do
    echo "I am good at ${skill}Script"
done
shell 数据类型
  • 字符串
    字符串可以用单引号,也可以用双引号,也可以不用引号
# 单引号
##单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
## 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用
# 双引号
##双引号里可以有变量
##双引号里可以出现转义字符

your_name="runoob"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting  $greeting_1
# 使用单引号拼接
greeting_2='hello, '$your_name' !'
greeting_3='hello, ${your_name} !'
echo $greeting_2  $greeting_3
#结果
#hello, runoob ! hello, runoob !
#hello, runoob ! hello, ${your_name} !

#获取字符串长度
string="abcd"
echo ${#string} #输出 4

# 提取子字符串,从字符串第 2 个字符开始截取 4 个字符
string="runoob is a great site"
echo ${string:1:4} # 输出 unoo

#查找子字符串,查找字符 i 或 o 的位置(哪个字母先出现就计算哪个)
string="runoob is a great site"
echo `expr index "$string" io`  # 输出 4
  • Shell 数组
array_name=(v0 "v11" v222 v3333)
#n:索引
valuen=${array_name[n]}
#使用 @ 符号可以获取数组中的所有元素
echo ${array_name[@]}

# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}
echo "数组的元素为: ${array_name[*]}"
echo "数组的元素为: ${array_name[@]}"
Shell 注释
:<<EOF
注释内容1...
注释内容1...
注释内容1...
EOF
# ------单行注释--------
:<<'
注释内容2...
注释内容2...
注释内容2...
'
# ------单行注释--------
:<<!
注释内容3...
注释内容3...
注释内容3...
!

shell传参

echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示:$*";
echo "传递的参数作为一个数组显示:$@";
echo "脚本运行的当前进程ID号:$$";
echo "后台运行的最后一个进程的ID号:$!";

开始执行

$ chmod +x test.sh 
$ ./test.sh 11 22 33
Shell 传递参数实例!
执行的文件名:./test.sh
第一个参数为:11
第二个参数为:22
第三个参数为:33
参数个数为:3
传递的参数作为一个字符串显示:11 22 33(一个带空格的字符)
传递的参数作为一个字符串显示:11 22 33(一个数组)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值