AI智能
改变未来

shell入门编写——基础知识合集

文章目录

  • Shell 入门教程
  • 基础知识点
  • 复杂语法
  • 特殊点

Shell 入门教程

学习这块是因为单位需要向ftp上传数据,过去同事都是用shell写的脚本,本人需要符合大家的使用习惯进行学习。现将学成后总结的学习道路精简优化放上,希望对大家有帮助。也欢迎高手们随时指正,本人在此提前感谢愿意指点我的人。

基础知识点

首先我们了解全部知识点的来源以菜鸟教程-Shell教程为例。部分个人总结如下:

chmod +x test.sh  # 1.修改为可执行文件name=\"Crystal\"  # 2.变量与等号中间不可加空格echo \"Hello, \"${name}\"!\"  # 3.1.使用变量用$, {}可选,最好加上echo \"Hello, ${#name}!\"  # 3.2.注意第二种输出方法,且输出为name的长度echo ${name:1:4}  # 3.3.截取子字符串array_name=(value0 value1 value2 value3)  # 4.1.只可定义一维数组,空格分隔echo ${name[0]} > file.txt  # 4.2.取某个数,并输出到文件file.txt中echo ${name[@]}  # 4.3.取所有数,也可以用${name[*]}echo $1  # 5.用于接收运行脚本时传递的参数:<<!6.多行注释,只有 :<< 是关键,! 是可变的7.1.条件表达式必须在[]中,例子中的空格一个都不能少7.2.逻辑运算符:&& 与,|| 或7.3.关系运算符:7.3.1.数字:==/-eq, !=/-ne, -gt大于, -lt小于, -ge大于等于, -le小于等于7.3.2.字符串:=, !=, -z str检测长度是否为0, -n str检测长度是否不为0, $str检测是否为空7.4.文件测试运算符:-d file检测是否为目录, -f file检测是否为普通文件, -e file检测文件是否存在!if [ ${name} == \"Crystal\" ]thenecho `expr 2 + 2`  # 8.expr是表示计算的,且2 + 2必须有空格fi# 7.5.表达式的then后不可为空,可写成一行,其他还有# if condition; then command1; else command2; fi# if condition1; then command1; elif condition2; then command2; else command3; fi# 8.1.for循环,可写成一行 for var in item1 item2 ... itemN; do command1; command2… done;# 8.2.while循环,不能写成一行, until循环同while循环i=1while [ $i -le 5 ]doecho $ilet \"i++\"done# 9.case语句,可使用 break, continue 关键词case $i in1)  echo \'你选择了 1\';;  # 注意分隔符,且这句之上可以加入 break 关键词2|3|4)  echo \'你选择了 1\'  # 注意多个条件对应怎么写;;*)  echo \'你没有输入 1-4之间的数字\';;esac

我没有放在上面的还有

printf

(就是比

echo

更富定制化、同C的

printf()

),

test

(同关系表达式的

[]

)。

复杂语法

还有除了基本语法之外,有一些复杂且常用的用法,如下:

# 1.函数,个人感觉不常用,暂不细说demoFun(){echo \"这是我的第一个 shell 函数!\"# $#取参数个数,$*/$@显示所有参数echo $1  # 当引用个数>=10,就得用${n}}echo \"-----函数开始执行-----\"demoFun 12echo \"-----函数执行完毕-----\"# 2.1.指令重定向:command > file将输出到file中,< 是获取文件内容,>> 是追加# 2.2.字符重定向:n > file 将字符n输出到file,>> 追加,n >& m合并,n <& m 输入合并# 3.文件包含:在一个shell中添加`source file.sh`语句就算引入包含

特殊点

注意:本部分随时补充,并不打算发过之后就不维护了,相应的细节知识点只要是相关的,我就会慢慢补进来。

  1. 在需要系统命令时,必须写指令的绝对路径,例如:
    /usr/local/mysql/bin/mysql
  2. 同一个变量,若里面保存的是执行语句,当第一次执行过后,必须再次赋值,否则直接调用语句不会执行;
  3. 需要养成习惯的是:条件判断最好用
    [[...]]

    ,因为使用单层

    []

    ,如果使用的变量为空就会报错

    unary operator expected
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » shell入门编写——基础知识合集