(小白学Linux)Linux Shell编程

基础语法

  • 编写第一个Shell脚本
#!/bin/bash
echo “Hello World”

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行

  • 运行Shell脚本
    /bin/sh test.sh
    ./test.sh

Shell变量

定义变量

定义变量时,变量名不加美元符号

your_name="Tom"

注意!变量名和等号之间不能有空格!

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

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

使用变量

使用一个定义过的变量,只要在变量名前面加美元符号即可

your_name="tom"
echo $your_name
your_name="alibaba"
echo $your_name

变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界

  • 直接引用
    thatVar=varA
  • 间接引用
    var=${!thatVar}
  • 将命令的结果分配给变量
    var=ls -l

只读、删除

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变

#!/bin/bash
myUrl="https://www.google.com"
readonly myUrl
myUrl="https://www.runoob.com"

结果如下:
/bin/sh: NAME: This variable is read only.

使用 unset 命令可以删除变量

unset variable_name

Shell传递参数

我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n
n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……

echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";

其运行结果如下:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
执行的文件名:./test.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3

特殊字符

在这里插入图片描述

Shell数组

数组中可以存放多个值;Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小

Shell 数组用括号来表示,元素用"空格"符号分割开

array_name=(value1 value2 ... valuen)

读取数组

读取数组的一般格式如下:

${array_name[index]}

echo "第一个元素为: ${my_array[0]}"
echo "第二个元素为: ${my_array[1]}"
...

获取数组中的所有元素

使用 @ 或 * 可以获取数组中的所有元素

echo "数组的元素为: ${my_array[*]}"
echo "数组的元素为: ${my_array[@]}"

获取数组的长度

参考上文的特殊字符

echo "数组元素个数为: ${#my_array[*]}"

Shell运算符

数值关系运算符

在这里插入图片描述

逻辑运算符

在这里插入图片描述

字符串运算符

在这里插入图片描述

文件运算符

文件运算符

Shell test

test结构

在这里插入图片描述

# You do not need to use 'if statement'
v1="Toronto"    v2="Beijing"
[[ "$v1" != "$v2" ]] && echo "$v1 is not equal to $v2"
v1=123    v2=45
[[ "$v1" -gt "$v2" ]] && echo "$v1 is greater than $v2

Shell 流程控制

if else-if else

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

实例:(与test结合使用)

num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
    echo '两个数字相等!'
else
    echo '两个数字不相等!'
fi

for循环

for循环一般格式为:

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

实例:

for str in 'This is a string'
do
    echo $str
done

输出结果为:
This is a string

while循环

while condition
do
    command
done

while循环可用于读取键盘信息。下面的例子中,输入信息被设置为变量FILM,按结束循环

echo '按下 <CTRL-D> 退出'
echo -n '输入你最喜欢的网站名: '
while read FILM
do
    echo "是的!$FILM 是一个好网站"
done

TMOUT

该作用是在用户输入空闲一段时间后自动断开

#!/bin/bash
TMOUT=3
echo "What is your name?"
echo "You only have $TMOUT seconds to answer!"
read name
if [ $? -eq 0 ]; then
  echo "Your name is $name"
else
  echo "Timed out!"
  exit 1
fi

这里要求用户在3秒内输入相应内容,否则则判定为超时
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值