Shell 相比 C 语言的优势在于它是完全嵌入在 Linux 中的,不需要安装,不需要编译,同时shell可以“内嵌”所有的Linux命令,所以在Linux环境下使用shell编程是极为方便的!介绍shell相关的背景知识不是本篇博客的目的,感兴趣的朋友可以参考Linux探索之旅 | 第五部分第二课
1.开头要加#!/bin/bash
(必不可少),表示以bash Shell运行程序,bash用的比较多,当然还有其他的Shell,如sh,ksh等
2.执行脚本时需要注意该脚本是否有可执行的权限,如果没有,需要加上可执行权限(chmod +x 文件名)
3.以调试模式运行:bash -x test.sh
4.声明变量:message='Hello World'
(在 bash 中,所有的变量都是字符串!)
5.echo
: 显示内容,echo "Hello World"
,echo $message
,echo "The message is $message"
6.read
: 请求输入
用法1:请求用户输入,并打印在屏幕上
read name
echo "Hello $name !"
用法2:指示用户按提示输入,并打印在屏幕上
read -p 'Please enter your name : ' name
echo "Hello $name !"
用法3:限制字符数目
read -p 'Please enter your name (5 characters max) : ' -n 5 name
echo -e "\nHello $name !"
用法4:限制输入时间
read -p 'Please enter the code to defuse the bomb (you have 5 seconds) : ' -t 5 code
echo -e "\nBoom !"
用法5:隐藏输入内容
read -p 'Please enter your password : ' -s password
echo -e "\nThanks, I will tell everyone that your password is $password"
7.Shell 脚本也可以接收参数
./variable.sh 参数1 参数2 参数3
$# :包含参数的数目。
$0 :包含被运行的脚本的名称 。
$1:包含第一个参数。
$2:包含第二个参数。
…
8.数组
array=('value0' 'value1' 'value2')
echo ${array[2]} #访问数组第三个元素,下标从0开始
echo ${array[*]} #一次性显示数组中所有的元素值
9.条件语句
用法1:
if [ 条件测试 1 ]
then
做 1 的事情
elif [ 条件测试 2 ]
then
做 2 的事情
elif [ 条件测试 3 ]
then
做 3 的事情
else
做其他事情
fi
在 bash 中可以做三种条件测试:
测试字符串
测试数字
测试文件
用法2:
case $1 in
"dog" | "cat" | "pig")
echo "It is a mammal"
;;
"pigeon" | "swallow")
echo "It is a bird"
;;
*)
echo "I do not know what it is"
;;
esac
case $1 in
:$1 表示我们要测试的变量是输入的第一个参数。
"dog" | "cat" | "pig")
:测试其中一个 case,也就是 $1 是否等于"dog" | “cat” | "pig"其中的一个,“|”表示“或”。
;;
:类似于主流编程语言中的 break;
,表示结束 case 的读取,程序跳转到 esac 后面执行。
*)
:相当于 if 条件语句的 else。
esac
:是 case 的反写,表示 case 语句的结束。
10.循环
用法1:循环直到条件测试为假
while [ 条件测试 ]
do
做某些事
done
用法2:循环直到条件测试为真
until [ 条件测试 ]
do
做某些事
done
用法3:
for 变量 in '值1' '值2' '值3' ... '值n'
do
做某些事
done
for i in `seq 1 2 10` #循环打印1-10的数字,间隔为2
do
echo $i
done
11.函数
申明的变量默认是全局变量,要申明局部变量,需要在变量名前加local
函数名 () {
函数体
}
以上是Shell编程的一些基本的用法,包括变量申明,条件语句,循环语句,函数的编写格式,参考Linux探索之旅