初学shell--笔记1.0

203 阅读2分钟

最近在学linux shell编程,以下是我的一些学习笔记(学习网站:www.runoob.com/linux/linux…

  1. Shell,翻译过来就是壳子,是用来帮助操作内核的,由于无法直接操作系统内核,所以Shell就像个大壳子被用来包裹在系统外面操作其内核,是一种脚本编程语言,也是连接Linux用户和内核的软件;
  2. 不同的系统有不同的内核,同样,shell也分为几种:sh、csh、bash等。#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,后面接不同的参数表示不同的解释器。例如:
#!/bin/bash    #bash解释器
#!/bin/sh      #sh解释器
#!/usr/bin/csh #csh解释器
  1. 执行Shell脚本的两种方法:
#!/bin/bash  
echo "Hello World !"   #echo命令用于向窗口输出文本

a.作为可执行程序

将上面的代码保存为 test.sh,并 cd 到相应目录:

chmod +x ./test.sh  #使脚本具有执行权限
./test.sh  #执行脚本

b.作为解释器参数

这种运行方式是,直接运行解释器,其参数就是 Shell 脚本的文件名,如:

/bin/sh test.sh
/bin/php test.php

这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。

  1. Shell定义变量的注意点:
  • 定义变量名得遵循规则
# 有效变量名
RUNOOB
LD_LIBRARY_PATH
_var
var2

#无效变量名
?var=123
user*name=runoob
  • 已经被定义的变量可以被重新定义,使用变量时,在变量名前加上'$'
  • readonly 命令定义只读变量,unset 命令可删除变量
  • 字符串类型单引号和双引号的区别:
  1. 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  2. 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
  3. 双引号里可以有变量
  4. 双引号里可以出现转义字符
your_name="runoob"  
# 使用双引号拼接  
greeting="hello, "$your_name" !"  
greeting_1="hello, ${your_name} !"  
echo $greeting  $greeting_1  # 输出结果为:hello, runoob ! hello, runoob !
  
# 使用单引号拼接  
greeting_2='hello, '$your_name' !'  
greeting_3='hello, ${your_name} !'  
echo $greeting_2  $greeting_3 # 输出结果为:hello, runoob ! hello, ${your_name} !
参数处理说明
$#传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数。 如""用「"」括起来的情况、以"*"用「"」括起来的情况、以"1 22 … n"的形式输出所有参数。
$$脚本运行的当前进程ID号
$!后台运行的最后一个进程的ID号
$@相同,但是使用时加引号,并在引号中返回每个参数。如"*相同,但是使用时加引号,并在引号中返回每个参数。 如"@"用「"」括起来的情况、以"1""1" "2" … "$n" 的形式输出所有参数。
$-显示Shell使用的当前选项,与set命令功能相同。
$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。