美文网首页
shell script语法基础

shell script语法基础

作者: begonia_rich | 来源:发表于2018-08-02 01:33 被阅读12次

记录基础语法格式以及举例

#!/bin/bash

声明script使用bash名称

$((计算式))

可以用这种格式进行计算式

script执行方式的区别
1直接执行:在子进程执行,变量等执行完毕即结束
2通过source执行:在父进程中执行,定义的变量依然可用

&& 与 ||

cmd1 && cmd2 cmd1返回结果为真,cmd2才执行
cmd1 || cmd2 cmd1返回结果为假,cmd2才执行

判断符号[]

[口”$HOME”口==口”/root"口]
口代表空格,注意四个空格位置,必须严格遵守语法
注意内部的变量和常亮都需要用””引起来,因为被替换之后可能有问题

script的默认变量
$0:执行脚本的文件名
$#:全部参数个数
$@:全部参数,空格分开
$1,$2…:第一个参数/第二个参数

条件判断式if…then

if [条件判断式]; then
    执行语句
elif [条件判断式]; then
    执行语句
else
    执行语句
fi

case条件判断

case $变量名称 in
    “case1” )
        执行语句
        ;;
    “case2” )
        执行语句
        ;;
    *)
        兜底执行
        ;;
esac

函数function

函数内的参数是通过1,2来取得,也就是函数内是取不到脚本的参数的

function fname(){
    echo “first param is $1"
}

while和until 条件循环

while [条件]
do
    执行语句
done

满足条件就循环

until [条件]
do
    执行语句
done

不满足条件就循环

for循环

for..in循环

for var in $(seq 1 10)
do
    执行语句
done

for…do…done数值处理

for ((i=0;i<10;i++)
do
    执行语句
done

追踪与调试

sh [-nvx] scripts.sh
-n:不执行,仅检查语法问题
-v:执行前将内容输出到屏幕
-x:将使用到的script内容输出到屏幕,调试时这是很有价值的信息

举例:sh -n scripts.sh(检查语法通过则无任何内容输出), sh -x scripts.sh(将使用的每一步scripts内容输出到屏幕,这是很有价值的信息哦)

条件测试附录(常用的参数有:-e(文件存在),-f(存在且为文件),-d(存在且为目录),-a(等价&&),-o(等价||),!(等价非))

条件测试附录1 条件测试附录2 条件测试附录3

简单的demo附录

if

yn="$1"

if [ "$yn" == "y" ] || [ "$yn" == "Y" ]; then
    echo 'OK continue.'
    exit 0
elif [ "$yn" == "n" ] || [ "$yn" == "N" ]; then
    echo 'oh interrupt'
    exit 0
else
    echo "I don't know what you fuck say"
fi

参数

#!/bin/bash

echo -e 'script name $0:'$0
echo -e 'total script parameter $#:'$#
[ "$#" -lt 2 ] && echo 'total less than 2' && exit 0
echo 'whole parameter $@:'$@
echo 'first parameter $1:'$1
echo 'second parameter $2:'$2

case

case $1 in
    "hi" )
        echo "fucking hi?"
        ;;
    "" )
        echo "must input fucking what!"
        ;;
    * )
        echo "what you fucking say : $1"
        ;;
esac

while,until

# -a == && , -o == ||

while [ "$yn" != "yes" -a "$yn" != "YES" ]
do
    read -p 'please input yes to exit while training:' yn
done
echo "OK exit while training..."

until [ "$yna" == "yes" ] || [ "$yna" == "YES" ]
do
    read -p 'please input yes to exit until training:' yna
done
echo "OK exit until training..."

for

user=$(cut -d ":" -f 1 /etc/passwd)
for var in $user
do
    echo "name:$var"
done

for var in $(seq 1 10)
do
    echo "seq:$var"
done

s=0
for ((i=0;i<5;i++))
do
    s=$(($s+$i))
done
echo "s:$s"

相关文章

网友评论

      本文标题:shell script语法基础

      本文链接:https://www.haomeiwen.com/subject/kwwdvftx.html