目录
Linux命令和shell脚本的区别联系
linux命令行只是单一的操作,shell是面向过程的、能够通过一系列的linux命令结合起来实现较为复杂的、操作linux系统的功能。
所以命令行就需要一个一个的输入命令但是shell脚本可以将命令集成到一个脚本文件中执行,如果要重复重复执行一些命令这种shell脚本的方式就更加便捷。
Shell简介
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。
Shell 既是一种命令语言,又是一种程序设计语言。
Shell脚本基本命令含义和举例
echo 命令用于向窗口输出文本
Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出
#!/bin/bash
echo "Hello World !"
显示结果定向至文件
echo "It is a test" > myfile
输出命令 printf
printf不会像echo自动添加换行符,可以手动添加 \n
$ echo "Hello, Shell"
Hello, Shell
$ printf "Hello, Shell\n"
Hello, Shell
$
#!/bin/bash
printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
执行脚本,输出结果如下所示:
姓名 性别 体重kg
郭靖 男 66.12
杨过 男 48.65
郭芙 女 47.99
%s %c %d %f 都是格式替代符,%s 输出一个字符串,%d 整型输出,%c 输出一个字符,%f 输出实数,以小数形式输出。
%-10s 指一个宽度为 10 个字符(- 表示左对齐,没有则表示右对齐),任何字符都会被显示在 10 个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
%-4.2f 指格式化为小数,其中 .2 指保留2位小数。
运行 Shell 脚本有两种方法:
1、作为可执行程序,将上面的代码保存为 test.sh,并 cd 到相应目录:
chmod +x ./test.sh #使脚本具有执行权限, ./test.sh 告诉系统说,就在当前目录找
./test.sh #执行脚本
2、作为解释器参数,直接运行解释器,其参数就是 shell 脚本的文件名,如:
/bin/sh test.sh
/bin/php test.php
Shell 变量
your_name="runoob.com"
使用变量只要在变量名前面加美元符号即可,如:
your_name="qinjx"
echo ${your_name}
只读变量使用
readonly myUrl
删除变量使用 unset 命令可以删除变量
Shell 字符串
unset variable_name
获取字符串长度
string="abcd"
echo ${#string} #输出 4
提取子字符串,以下实例从字符串第 2 个字符开始截取 4 个字符:
string="runoob is a great site"
echo ${string:1:4} # 输出 unoo
Shell 数组
array_name=(value0 value1 value2 value3)
读取数组元素值的一般格式是:
${数组名[下标]}
valuen=${array_name[n]} 使用 @ 符号可以获取数组中的所有元素,例如:echo ${array_name[@]}
获取数组长度的方法与获取字符串长度的方法相同:
# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}
Shell 注释
用#
Shell 基本运算符
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。例如,两个数相加(注意使用的是反引号 ` 而不是单引号 ',这个字符在 Esc 键下边):
#!/bin/bash
val=`expr 2 + 2`
echo "两数之和为 : $val"
算术运算符
实例
#!/bin/bash
a=10
b=20
val=`expr $a + $b`
echo "a + b : $val"
val=`expr $a - $b`
ec