基础与变量


基础知识

#!/bin/bash (这个是shell脚本的解释说明)
echo "Hello World !"

运行shell脚本

我们先给脚本执行权限,然后再执行脚本

chmod +x ./test.sh  #使脚本具有执行权限
./test.sh  #执行脚本

变量

#shell变量
your_name="runoob.com"
#有效的shell变量
RUNOOB
LD_LIBRARY_PATH
_var
var2
#无效的shell变量
?var=123
user*name=runoob
#使用shell变量
your_name="qinjx"
echo $your_name
echo ${your_name}

使用一个定义过的变量,只要在变量名前面加美元符号即可。变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况

for skill in Ada Coffe Action Java; do
    echo "I am good at ${skill}Script"
done

只读变量

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

删除变量

unset variable_name

变量被删除后不能再次使用。unset 命令不能删除只读变量。

shell字符串

分为单引号和双引号

单引号

str=\'this is a string\'

单引号字符串的限制:
1.单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
2.单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

双引号

your_name=\'runoob\'
str="Hello, I know you are \"$your_name\"! \n"
echo -e $str

输出:Hello, I know you are "runoob"!
双引号的优点:
1.双引号里可以有变量
2.双引号里可以出现转义字符

拼接字符串

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

获取字符串长度

string="abcd"
echo ${#string} #输出 4

提取字符串

string="runoob is a great site"
echo ${string:1:4} # 输出 unoo

查找字符串

string="runoob is a great site"
echo `expr index "$string" io`  # 输出 4

注意: 以上脚本中 ` 是反引号,而不是单引号 ',不要看错了哦。

shell数组

#bash支持一维数组(不支持多维数组),并且没有限定数组的大小
#定义如下
数组名=(值1 值2 ... 值n)
#例如
array_name=(value0 value1 value2 value3)
#单独定义数组的各个分量
array_name[0]=value0
#读取数组
${数组名[下标]}
#使用 @ 符号可以获取数组中的所有元素,例如:
echo ${array_name[@]}

获取数组长度

# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}

shell注释

以 # 开头的行就是注释,会被解释器忽略。
多行注释还可以使用以下格式:

:<<EOF
注释内容...
注释内容...
注释内容...
EOF

:<<\'
注释内容...
注释内容...
注释内容...
\'

:<<!
注释内容...
注释内容...
注释内容...
!

文章作者: 小游
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小游 !
  目录