shell编程最最基础知识

创建、运行shell脚本

新建一个脚本test.sh,首先需要做的是在文件第一行写下如下内容:

#!/bin/sh

‘#!’是一个约定标记,用来定义该文件应该用哪种解释器运行。

编写好脚本后,执行以下两步:

>>> chmod +x ./test.sh
>>> ./test.sh

第一行是授予脚本执行权限,第二行是执行该脚本。执行时必须使用./test.sh的格式,如果直接输入test.sh,命令行程序会在系统的PATH路径中寻找对应的脚本,而不会扫描当前路径。

另外还可以如此执行脚本:

>>> /bin/sh test.sh

如此直接调用sh解释器来执行test.sh脚本,这种情况下脚本开头可以不定义文件执行需要的解释器。

定义、使用变量

用=符号定义一个变量:

var=abc

var中保存了字符串‘abc’。有三点需要注意:第一,在申明变量时变量之前不需要$符号。第二,等号必须紧挨着左边的变量,不能留空,否则var会被认为是一个命令。第三,等号右边紧挨着abc时,abc被当做字符串,否则会被理解为命令。

使用变量时,在变量名前加$:

echo $var
# 输出 abc

花括号用于定义变量名边界:

echo "you are in ${num}nd place"
echo "you are in $numnd place"
#当num变量等于2时
#第一行输出:you are in 2nd place
#第二行输出:you are in nd place

第二行中,程序查找的是numnd变量的值,但这个变量不存在,因此值为null

使用以下方式给变量定义默认值:

echo "you are in ${numnd:-2} place
# 输出:you are in 2 place

当a为null或者空字符串时,a将被赋值为2

其他方法:
使用readonly可以使变量只读;unset可以删除变量。

使用字符串

单引号、双引号都可以定义字符串,区别在于:
1、单引号中任何字符都会原样输出,即使变量也不起作用。
2、双引号中保留了变量和部分特殊字符,可以使用转义字符\。

name=huang
echo 'my name is $name'
echo "my name is $name \$name"
# 输出
# >>> my name is $name
# >>> my name is huang $name

更多关于引号的内容请参考:
linux shell中的单引号与双引号的区别

在字符串中,所有的命令名都被当做单纯的文本了,如果需要在字符串中连接一段命令的输入,需要使用$()符号:

echo "current dir is $(pwd)"
# 输出:current dir is /home/blaine

更多括号用法参见:
大括号{}、中括号[]、小括号()用法实例

流程控制

一个if语句使用if,then,else,elif,fi这些关键词构造,一个示例如下:

a=10
b=20
if [ $a == $b ]
then
   echo "a 等于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
else
   echo "a 小于 b"
fi

# 输出:a 小于 b

这里的条件需要用中括号括起来。更多shell运算符号见这里
更多流程控制语句点这里

输入输出重定向

command < file : 将command指令的输入重定向到文件file
command > file : 将command指令的输出重定向到文件file
command >> file : 将command指令的输出以追加的方式重定向到file
comd1 | comd2 : 将comd1命令的输出作为 comd2命令的输入。

其他内容

1、怎么写注释呢
使用#写单行注释,没有表示多行注释的符号。
2、行末的反斜杠什么意思
反斜杠在行尾作为续行符号,允许用户输入跨越多行的长命令。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值