基础

在linux中很少利用扩展名决定文件类型,你可以为脚本使用.sh,但是shell不关心。检查文件是否是脚本程序最好方法是用file命令,如:file first或 file/bin/bash

如果你有了脚本,运行它有两种方法,
1:调用shell,并把文件名当成一个参数. $/bin/sh first
2:chmod +x file将文件设置为可执行,然后直接调用。但是有个问题就是如何让shell知道这个文件的位置?你可以通过设置PATH=$PATH:.或者编辑.bash_profile文件,亦或则cd到脚本程序的目录下,然后执行./first。让他知道文件的位置。

变量:
在默认情况下,所有的变量都被看做字符串并以字符串来存储,即使他们被赋值为数值也是如此,只是在需要时,shell会吧数值型字符串转换为对应的数值然后进行操作。
如果你想获得变量内容必须在前面加$.
关于变量的一个注意点:

形式if[ $timeofday = “yes” ],你不输入任何东西,直接键入enter,会报错。[= “yes” ]是个错误的语法,而如果你加了引号以后,就是[“ “ = “yes” ]的判断,没有问题。你必须对$timeofday 加一个引号,如形式if [ "$timeofday" = "yes" ]


条件:
test命令本身不会显示任何消息,它本身会有一个布尔值,但是可以通过 && 和|| 配合echo命令或 $?来展示
注意比较下面的几种例子,因为||/&&都具有短路效果,只要不能确定整个表达式的布尔值,就继续往下执行。

使用[]表判断时的注意点
1:中括号内的每个组件都需要用空格来分隔
2:中括号内的变量,最好用双引号来设置(上面变量中已经说原因了)
3:括号内的变量,最好用单引号或双引号来设置
4:条件类型分为3类:字符串比较,算术比较和文件有关的测试



控制结构
如果你不想then另起一行的话,注意then前面别忘了带分号。
if [判断表达式]; then
elif [判断表达式]; then
else [判断表达式]
fi

for循环
除了我们平常用的形式

for ((初始值; 限制值; 执行步长))
do    
    程序段
done

形式二,第一次循环$var=con1,第二次$var=con2
for var in con1 con2 con3...
do
    程序段
done
通配符的for循环。
这个例子演示了$(command)语法, for命令的参数来自$()括号中的输出结果

for file in $(ls f*.sh);do
    lpr $file
done


while 循环
while condition
do
  statement
done

until 循环
until condition
do
  statement
done


case....esac判断,每一个变量的程序段最后都需要两个分号来表示该程序段的结束。最后的*)表示非上面情况下执行的程序段。
variable 即$变量大致有下面两种方式获得:
直接之行式:利用”script.sh variable”方式直接给$1变量赋以内容。
交互式:通过read命令让用户输入。
case variable in
    pattern [ | pattern] ...) statements;;
    pattern [ | pattern] ...) statements;;
    *) statement ;;
    …
esac

case  "$timeofday" in
  yes | y )
     statement ;;        ;;引号千万别忘记
  [nN]* )                #通配符
     statement;;
  * )
     statement;;
esac


function,函数后面跟实参的话,它跟shell脚本类似,函数名称为$0,后续的变量以$1,$2,$3....替换。
当函数被调用的时候,脚本程序位置参数($* , $@,$#,$1,$2)会被替换成为函数的参数,这也是你读取传递给函数的参数的方法。
function_name (){
    statements
}


命令

break    跳出一层循环,后面跟分号
continue 跳到下一次循环继续进行
点(.)    我们可以在shell中临时设置一个环境变量,但是一旦你离开了脚本这些变量的值就会恢复到执行脚本以前的值,如果你想设置这些变量,而且让它在我们推出脚本以后仍旧有效的话,就执行.命令。注意你执行的时候因为它是一个命令,所以要用空格跟后面分开,
$ .  ./env-set
eval     允许你对
exit     shell脚本编程,0表示成功,退出码1~125是脚本程序可以使用的错误代码其余为保留含义。

export    将作为它的参数的变量导出到shell中,并使子shell中有效。
printf    格式话输出printf "format string" parameter1 parameter2..空格作为字段分割符


set       设置参数变量,后面跟的是一组以空格分割的字符串,然后根据该字段分割符为每个位置参数设值


shift     参数变量左移一个位置$2->$1 $n->$n-1 $1和$n将不存在,$0不变,$*,$#,$@都变化
unset     删除变量和函数


$(command)

编写脚本程序时,我们经常想执行一条命令,然后把该命令的输出放到一个变量中,可以用$(command)实现,或者古老的`command`

$ set $(date)   #给位置变量设置值

$ echo $(who)


算术扩展

使用declare定义变量的类型之后,才能进行加减运算。但是bash shell默认仅支持整数数据。数字运算可以使用”declare -i total=$firstnu*$secnu”,也可以通过方式var=$((运算内容))

$((...))扩展  x=$(($x+1))

 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值