shell程序详细解说
目录
1 shell能做什么
shell只定义了一个非常简单的编程语言,所以,如果你的脚本程序复杂度较高,或者要操作的数据结构比较复杂,那么还是应该使用Python、Perl这样的脚本语言,或者是你本来就已经很擅长的高级语言。因为sh和bash在这方面很弱,比如说:
它的函数只能返回字串,无法返回数组
它不支持面向对象,你无法实现一些优雅的设计模式
它是解释型的,一边解释一边执行,连PHP那种预编译都不是,如果你的脚本包含错误(例如调用了不存在的函数),只要没执行到这一行,就不会报错.
2 shell程序详细讲解
其中包括 字符串 shell变量 shell打印变量 shell数组 shell流程控制 if判断 for循环 while循环。
#!/bin/sh
#第一行#!/bin/sh 指定脚本解释器,这里是用/bin/sh做解释器的 。(#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行。注意其它 以“#”开头的行就是注释,会被解释器忽略。)
#--------------------------------------------
# 这是一个多行注释:https://www.fffmo.com/1279.html
# 功能:shell程序详细解说
# 特色:让你快速了解shell程序
#--------------------------------------------
cd ~ #切换到当前用户的home目录
mkdir fffmo.com #创建一个目录fffmo.com
cd fffmo # :切换到fffmo.com 目录
echo "#################shell变量####################"
your_name="qinjx" #定义变量 your_name
echo $your_name #打印变量 your_name
echo "#################shell数组####################"
#定义数组
array=("Hi" "my" "name" "is")
#打印数组的第一个元素
echo ${array[0]}
#打印数组的所有元素
echo ${array[@]}
#输出所有数组索引
echo ${!array[@]}
#移除数组中索引为 2 的元素
unset array[2]
#在数组中添加 id 为 333 的元素
array[333]="New_element"
echo "#################shell 单引号与双引号####################"
str='this is a string' # 单引号里的任何字符都会原样输出
str1='$your_name' # 单引号字符串中的变量是无效的
str2="$your_name" # 双引号字符串中的变量是有效的
"abc"=="abcd" # ==用于字符串比较 ,而=用户定义变量 变量传输
echo "#################shell流程控制 if判断 ####################"
#如果cha>900 则打印"这是if例子:"
cha=1000
if(( "$cha" >900 ));then
echo "这是if例子"
fi
#如果“fffmo.com”文件夹不存在 则创建文件夹fffmo.com,存在则打印 文件夹不存在"
dir=fffmo.com
if [ ! -d "$dir" ];then
mkdir $dir
echo "创建文件夹成功"
else
echo "文件夹已经存在"
fi
echo "#################shell流程控制 for循环 ####################"
# 循环条件,一共循环10次 创建一个fffmo_0…9.txt文件
for ((i=0; i<10; i++)); do
touch fffmo_$i.txt
done
# 循环体结束
echo "#################shell流程控制 while循环 ####################"
COUNTER=0
while [ $COUNTER -lt 10 ]; do
echo The counter is $COUNTER
let COUNTER=COUNTER+1
done