shell编程入门知识汇总

本文介绍了Shell脚本相关知识。Shell是用C语言编写的程序,文中涵盖了Shell版本、第一个Hello World示例、脚本执行方法,还详细讲解了变量、字符串、数组的使用,以及注释、反引号、参数传递、运算符、流程控制、函数定义调用和文件引用等内容。

Shell 是一个用 C 语言编写的程序。
shell script 脚本
1.shell版本
Bourne Shell(/usr/bin/sh或/bin/sh)
#!告诉系统用的shell程序路径
#!/bin/sh 或者 #!/bin/bash
2.第一个helloworld
#!/bin/bash
echo "Hello World !"
3.执行shell脚本
(1)
 chmod +x test.sh  赋权
 ./test.sh
(2)
sh test.sh 不需要在第一行指定解释器信息,写了也没用。

4.变量,注意不要有空格
(1)命名/赋值
file_name=$1
file_name="xxx"

英文字母,数字和下划线,首个字符不能以数字开头。
中间不能有空格,可以使用下划线
不能使用标点符号
不能使用bash里的关键字
(2)使用
echo $file_name
echo ${file_name}
建议都加上花括号
echo "$file_nameabc"   直接输出$file_nameabc作为字符串

5.字符串
(1)写法
file_name='xxx'
file_name="xxx"
单双引号的区别是,双引号中可以有变量,单引号不行
(2)拼接字符串
greeting_1="hello, ${your_name} !"
(3)获取字符串长度
string="abcd"
echo ${#string} #输出 4
(4)截取字符串
string="runoob is a great site"
echo ${string:1:4} # 输出 unoo

6.数组
(1)括号定义,空格分隔
array_name=(value0 value1 value2 value3)
(2)读取数组
${数组名[下标]}
echo ${array_name[@]}   读取所有元素
(3)获取数组元素个数
# 取得数组元素的个数
length=${#array_name[@]} 或者
length=${#array_name[*]}

7.注释
#
8.反引号 `
反引号中的命令可以给变量赋值
file_name=`echo "hello.sh"`
echo ${file_name}    输出:hello.sh

9.参数传递
echo $0  文件名
$1 第1个参数
$2 第2个参数
$#  传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数    
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号


10.运算符
val=`expr 2 + 2`
echo "两数之和为 : $val"
输出结果:   两数之和为 : 4
(1)算数运算符  +  -  \*  /  %
比较数字
 ==
 != 
(2)关系运算符
-eq
-ne
-gt
-lt
-ge
-le
if [ $a -eq $b ] 
then
echo "a 等于 b"
fi
(3)布尔运算符
!   [ ! false ] 返回 true
-o  或运算,有一个表达式为 true 则返回 true。[ $a -lt 20 -o $b -gt 100 ] 返回 true
-a  与运算,两个表达式都为 true 才返回 true。[ $a -lt 20 -a $b -gt 100 ] 返回 false
(4)逻辑运算符
&&  逻辑的 AND
||  逻辑的 OR

(5)字符串运算符
-z 检测字符串长度是否为0,为0返回 true。  [ -z $a ] 返回 false。
-n 检测字符串长度是否为0,不为0返回 true。[ -n "$a" ] 返回 true。
(6)文件测试运算符
-d 检测文件是否是目录,如果是,则返回 true。 [ -d $file ] 返回 false
-f 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。[ -f $file ] 返回 true。
-e 检测文件(包括目录)是否存在,如果是,则返回 true。[ -e $file ] 返回 true
-s 检测文件是否为空(文件大小是否大于0),不为空返回 true。[ -s $file ] 返回 true。

11.流程控制 if..else for
(1)if..else
注意:if [ ] 之间必须有空格,否则报错
if [ $a -eq $b ];then
else
fi
或者
if [ $a -eq $b ]
then
elif [ $a -eq $c ]; then
else
fi
(2)for
for val in 1 2 3 4 5
do
    echo "The value is: $val"
done
或者写成
for val in 1 2 3 4 5;do
    echo "The value is: $val"
done
数组
nums=(1 2 3 4 5)
for val in ${nums[@]}
do
    echo "The value is: $val"
done
(3)while
int=1
while(( $int<=5 ))
do
    echo $int
    let "int++"
done
(4)无限循环
while true
do
    command
done
(5)case
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
    1)  echo '你选择了 1'
    ;;
    2)  echo '你选择了 2'
    ;;
    3)  echo '你选择了 3'
    ;;
    4)  echo '你选择了 4'
    ;;
    *)  echo '你没有输入 1 到 4 之间的数字'
    ;;
esac
(6)break continue
break 结束循环
continue 结束本次循环

12.函数
(1)函数定义调用
demoFun(){
    echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"
(2)函数参数
书写形式不变,获取参数也是$
demoFun(){
    echo "$1"
    echo "$2"
}
demoFun 1 2

13.文件引用
#使用 . 号来引用test1.sh 文件,注意点号后面有空格
. ./test1.sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值