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、行末的反斜杠什么意思
反斜杠在行尾作为续行符号,允许用户输入跨越多行的长命令。

猜你喜欢

转载自blog.csdn.net/vincent_hbl/article/details/75446593