shell 语法 shell命令 用shell编写进度条

shell的作用是解释用户输入的命令。
shell有两种执行模式,交互式和批量式。
交互式:用户输入一条命令,处理一条命令
批量式:编写一个脚本,其中有很多条命令,一次性把这些命令执行完。

shell变量
在shell中没有变量的类型,它是一个弱类型的脚本语言,也可以说它将所有的变量都当做字符来处理。
在shell中也不需要对变量进行先定义后使用,可以直接使用变量。
变量分为两种环境变量和本地变量。
环境变量:环境变量可以从⽗进程传给⼦进程,因此Shell进程的环境变量 可以从当前Shell进程传给fork出来的⼦进程。⽤printenv命令可以显⽰当前Shell进程的环境 变量。
本地变量:只存在于当前Shell进程,⽤set命令可以显⽰当前Shell进程中定义的所有变量(包括本地变量和环境变量)和函数。
例在shell中赋值一个变量
DATA=data
注意在等号两端不能有空格,否则会被shell解释成命令和命令行参数。
变量引用
一个变量叫做DATA,使用 DATADATA DATA。但是在有些情况下,就不能使用简写。
例如

DATA=100
echo ${DATA}hello
echo $DATAhello

上述两条命令的结果就会出现差异
第一条命令的结果为100hello
第二条命令的结果为空,因为在程序中找不到变量DATAhello,对于没有定义的变量,取值为可能空字符串

通配符 * : 匹配0个或多个任意字符
? : 匹配⼀个任意字符
[若⼲字符] : 匹配⽅括号中任意⼀个字符的⼀次出现

shell命令
1.条件测试 test [
条件测试有两种方法:test和[
用test或[可以判断一个条件是否为真,为真返回0,为假返回1.
在使用[判断时,判断的语句必须与[之间隔一个空格,因为[是一个命令,在shell里命令和参数必须隔开。
2.-eq(等于) -lt(小于) -le(小于等于) -gt(大于) -ge(大于等于)
!(非) -a(逻辑与) -o(逻辑或)
shell语法
1.if then else elif fi
这与C语言里的if else类似,只是这里if是一条命令,then是一条命令。if在判断完之后要执行下一条,在shell里只有命令才能执行,所以必须给它一个命令,才能执行语句。elif是else if的意思。fi表示这个if语句结束。下面举个例子就能清楚的了解if的用法

read DATA//从标准输入读取内容
if [ $DATA -gt 100 ]
then
     echo "great" //DATA的值大于100时,打印great
elif [ $DATA -eq 100 ]
then 
    echo "equal"//DATA的值等于100时,打印equal
else
     echo "less"//DATA的值小于100时,打印less
fi

2.for循环
for循环有两种写法
1) for(( i=0;i

while [ i -lt 100]
do
    echo "hello'
    let i++
done

3.case
case相当于C里的switch

read value
case $value in
a )
echo "A"//当输入value值为a时,打印A
;;
b )
echo "B"//当输入value值为b时,打印B
;;
c )
echo "C"//当输入value值为c时,打印C
;;
esac //case结束的标志

用shell编写进度条

#!/bin/bash

i=0
lable=('|' '\\' '-' '/')
while [ $i -le 100 ]
do
    printf "[%-100s][%d%%][%c]\r" "$str" "$i" "${lable[$i%4]}"
    str='#'$str
    sleep 0.1
    let i++

done

你可能感兴趣的:(linux,shell,shell,linux)