shell scripts 学习

学习笔记

1、本教程关注的是 Bash,也就是 Bourne Again Shell

  • Bourne 目的地和边界

2、./test.sh #执行脚本
3、所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。
4、echo “Hello World !” 打印语句
5、命名不能用bash里的关键字;命名只能用英文;中间不能有空格;不能用标点符号
6、量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
7、推荐给所有变量加上花括号,这是个好的编程习惯。
8、已定义的变量,可以被重新定义
9、使用 unset 命令可以删除变量,变量被删除后不能再次使用。unset 命令不能删除只读变量
10、单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
11、单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用
12、双引号里可以有变量
双引号里可以出现转义字符
13、echo expr index "$string" io 搜索io
以上脚本中 ` 是反引号,而不是单引号 ',不要看错了哦。
14、$* 与 $@ 区别:
相同点:都是引用所有参数。
不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 “1 2 3”(传递了一个参数),而 “@” 等价于 “1” “2” “3”(传递了三个参数)。

算术运算符

  • expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

  • 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
    条件表达式要放在方括号之间,并且要有空格,例如: [ a = = a== b] 是错误的,必须写成 [ $a == $b ]

关系运算符

-eq (equal) 等于
-ne(not eq)不等于
-gt(greater than)大于
-lt(less than) 小于
-ge(great than or equal to) 大于等于
-le(less than or equal to)小于等于
注意上面的运算关系都是针对左边和右边比较的

布尔运算符

-o 或运算
-a 与运算
18、算术运算符,基本和c语言的相同

Shell echo 命令

  • 显示变量
    read 命令从标准输入中读取第一行,并把输入行的每个字段的值指定给shell变量
  • 显示换行
    echo -e”OK! \n”
  • 显示结果定向至文件
    echo “It is a test” > testShell.sh
    结果将文本写入到testShell文件里面去了
  • 显示命令执行结果
    echo date
    注意这里使用了反引号`,而不是单引号

Shell test命令

  • 字符串测试
    = 等于则为真
    -z字符串 字符串的长度为零则为真
    -n字符串 字符串的长度不为零则为真
  • 文件测试
    -e 文件名 如果文件存在则为真
    -f 文件名 如果文件存在且可读则为真
    -w 文件名 如果文件存在可写则为真
    -x 文件名 如果文件存在且可执行则为真
    -s 文件名 如果文件存在且至少有一个字符则为真
    -d 文件名 如果文件存在且为目录则为真
    -f 文件名如果文件存在且为普通文件则为真
    -c 文件名 如果文件存在且为字符型特殊文件则为真
    -b 文件名 如果文件存在且为块特殊文件则为真
    Shell还提供了与( -a (and))、或( -o(or) )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:"!“最高,”-a"次之,"-o"最低

Shell 函数

  • 参数返回,可以显示:return 返回,如果不加,将以最后一条命令运行的结果,作为返回值,return 后跟数值n
  • 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回 到您的终端。
    -e 是判断文件是不是存在

输入/输出重定向

  • 这样,本来需要从键盘获取输入的命令会转移到文件读取内容。
  • 输出重定向是大于号(>),输入重定向是小于号(<)。
  • $ wc -l users
    2 users
    也可以将输入重定向到 users 文件
    $ wc -l < users
    2
    上面两个例子的结果不同:第一个例子,会输出文件名;第二个不会,因为它仅仅知道从标准输入读取内容。

文件包含

  • 和其他语言一样,Shell也可以包含外部脚本,这样可以很方便的封装一些共用的代码作为一个独立的文件
  • #使用 . 号来引用test1.sh 文件
    . ./test1.sh 注意两个点中间有一个空格

提问

  • chmod +x 什么意思?
    就是给执行文件

参考链接

猜你喜欢

转载自blog.csdn.net/u014544346/article/details/106406255
今日推荐