整理自 Shell 教程 | 菜鸟教程
#!/bin/bash
chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本
/bin/bash test.sh #作为解释器参数
your_name="qinjx"
echo $your_name
echo ${your_name} #推荐
单引号:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
双引号:
双引号里可以有变量
双引号里可以出现转义字符
字符串连接:
不需要连接符号
greeting="hello, "$your_name" !"
获取字符串长度:
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` # 返回第一个i或o的位置 输出 4
定义数组
array_name=(value0 value1 value2 value3)
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen
读取数组
echo ${array_name[n]}
echo ${array_name[@]} 输出所有元素
#--------------------------------------------
# 这是一个注释
# author:菜鸟教程
# site:www.runoob.com
# slogan:学的不仅是技术,更是梦想!
#--------------------------------------------
##### 用户配置区 开始 #####
#
#
# 这里可以添加脚本描述信息
#
#
##### 用户配置区 结束 #####
//多行注释
:<<'
注释内容...
注释内容...
注释内容...
'
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "传递的参数作为一个字符串显示:$*";
算术运算符:
val=`expr $a + $b` #符号+两边有空格
echo "a + b : $val"
if [ $a == $b ] #装在[]中
then
echo "a 等于 b"
fi
关系运算符:
-eq等于 -ne不等 -gt大于 -lt小于 -ge大于等于 -le小于等于
if [ $a -eq $b ]
then
echo "$a -eq $b : a 等于 b"
else
echo "$a -eq $b: a 不等于 b"
fi
布尔运算符:
! -o或 ||或 -a且 &&且
if [ $a -lt 100 -a $b -gt 15 ]
then
echo "$a 小于 100 且 $b 大于 15 : 返回 true"
else
echo "$a 小于 100 且 $b 大于 15 : 返回 false"
fi
>
会重写文件,如果文件里面有内容会覆盖。
>>
将输出内容追加到目标文件中。如果文件不存在,就创建文件。
echo输出的字符串总结:
/ | 能否引用变量 | 能否引用转义符 | 能否引用文本格式符(如:换行符、制表符) |
---|---|---|---|
单引号 | 否 | 否 | 否 |
双引号 | 能 | 能 | 能 |
无引号 | 能 | 能 | 否 |
Shell printf 命令:
%d十进制整数 %s字符串 %c字符 %f浮点
if:
if condition
then
commandN
fi
if else:
if condition
then
commandN
else
command
fi
if elif else:
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
for
for value in item1 item2 ... itemN
do
command1
command2
...
commandN
done
while
while condition
do
command
done
until
until condition
do
command
done
case
case str in
str1)
command1
command2
...
commandN
;;
str2)
command1
command2
...
commandN
;;
str3|str4)
commandN
;;
esac
一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:
命令 | 说明 |
---|---|
command > file | 将输出重定向到 file。 |
command < file | 将输入重定向到 file。 |
command >> file | 将输出以追加的方式重定向到 file。 |
n > file | 将文件描述符为 n 的文件重定向到 file。 |
n >> file | 将文件描述符为 n 的文件以追加的方式重定向到 file。 |
n >& m | 将输出文件 m 和 n 合并。 |
n <& m | 将输入文件 m 和 n 合并。 |
<< tag | 将开始标记 tag 和结束标记 tag 之间的内容作为输入。 |
/dev/null 文件
如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null
如果希望屏蔽 stdout 和 stderr
command > /dev/null 2>&1
. filename # 注意点号(.)和文件名中间有一空格
或
source filename