Linux Shell入门

字符串

#!/bin/bash

skill='java'

str="I am good at $skill"

echo $str

echo ${str:2}

echo ${str:2:2}

echo `expr index "$str" am`
echo `expr index "$str" I`

变量名外面的花括号{}是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界

#!/bin/bash

skill='java'

echo ${#skill}

expr length $skill

传递参数

我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n
n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……

#!/bin/bash

echo "接收到的参数是";

echo "脚本名 $0";

echo "第1个参数为:$1";

echo "第2个参数为:$2";

echo "第3个参数为:$3";

为脚本设置可执行权限,并执行脚本

$ chmod 775 canshu.sh
$ ./canshu.sh 1 2 3

算术运算符

#!/bin/bash

a=5

b=2

echo `expr $a + $b`

echo `expr $a - $b`

echo `expr $a \* $b`

echo `expr $a / $b`

((a++))

echo "a=$a"

c=$((a+b))

d=$[a + b ]

echo "c=$c"
echo "d=$d"

流程控制

if else

#!/bin/bash

a=20

if [ $a -gt 10 ]; then
    echo "a > 10"
fi

关系运算符

#!/bin/bash
a=$1
b=$2

echo "a = $a , b = $b"

if [ $a -gt  100 ]; then
    echo "$a 大于100"
fi


if [ $a -eq $b ]; then
    echo "$a 等于 $b "
else 
    echo "$a 不等于 $b"
fi


if [ $a -lt $b ]; then
    echo "$a 小于 $b"
elif [ $a -eq $b ]; then
    echo "$a 等于 $b"
else
    echo "$a 大于 $b"
fi


if test $((a+10)) -gt $((b*b)); then
        echo "(a+10) 大于 (b * b)"
else
        echo "(a+10) 小于或等于 (b*b)"
fi

循环

#!/bin/bash

for skill in java php python;do
    echo " I am good at ${skill}Script"
done
#!/bin/bash

for i in 1 2 3 4 5; do
        echo $i;
done


for i in {1..5}; do
        echo $i
done

for i in {1..5..2}; do
        echo $i
done


for f in `ls /`; do
        echo $f
done

break

#!/bin/bash

i=0;
while true; do
    sleep 1
    echo $i `date +"%Y-%m-%d %H:%M:%S"`

    i=$[ i +1 ]
    if [ $i -eq 3 ]; then
        break
    fi
done

continue

#!/bin/bash

for i in {1..30};do
    if test $[ i % 3 ] -eq 0;then
        continue
    fi
    echo $i
done

case(switch)

#!/bin/bash

echo '输入1到4之间的数字:'

read aNum

case $aNum in
    1) echo "你选择了1"
    ;;
    2) echo "你选择了2"
        ;;
        3) echo "你选择了3"
        ;;
        4) echo "你选择了4"
        ;;
        *) echo "你没有输入1到4之间的数据"
        ;;
esac

函数

在函数体内部,通过 $n的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数...

#!/bin/bash

budaican(){
    echo "不带参数的函数"
}

budaican

daican(){
    echo "第一个参数为$1 "
    echo "第二个参数为$2 "
    echo "第十个参数为${10} "
    echo "第十一个参数为${11} "
    echo "参数总数有 $# 个"
    echo "作为一个字符串输出所有参数$*"
}

daican 1 2 3 4 5 6 7 8 9 56 89

数组

#!/bin/bash

my_array=(A B C "D")

echo "第二个元素为 ${my_array[1]}"

echo "第四个元素为 ${my_array[3]}"

echo "数组的元素为 ${my_array[*]}"

echo "数组的元素为 ${my_array[@]}"

for var in ${my_array[*]}
do
    echo $var
done

my_array_num=${#my_array[*]}
for((i=0;i

注意,在Ubuntu系统请使用./文件名.sh执行

你可能感兴趣的:(Linux Shell入门)