跳到主要内容

初识shell

概述

  1. Shell 是一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统(主要是Linux)内核的服务。

  2. Linux默认的shell是bash shell

  3. 例子:

#!/bin/bash
echo "Hello World!"
提示

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell

  1. 运行shell脚本:
./test.sh        # 方法1
/bin/sh test.sh # 方法2
提示

快捷创建shell脚本:

#!/bin/bash
if test -z $1;then
newfile="./script_`date +%m%d_%s`"
else
newfile=$1
fi
echo $newfile
if ! grep "^#!" $newfile &>/dev/null; then
cat >> $newfile << EOF
#!/bin/bash
# Author:
# Date & Time: `date +"%F %T"`
#Description:
EOF
fi
vim +5 $newfile
chmod +x $newfile

# 注释
test:检查某个条件是否成立
-z:判断是否为空
$1:第一个参数
^:表示首行,即以#!开头的行
&:用&连接的符号将同时执行,不管命令是否执行成功
>/dev/null:丢弃,就是说如果搜索到以#!开头,把结果丢弃了
vim +5:打开文件,光标定位在第5行

常见命令

echo:简单输出

\ :转义
-e:开启转义
\n:换行
\c:不换行
-n:不换行

printf:格式化输出

printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234

:<<EOF
1. %s %c %d %f都是格式替代符,%s输出字符串,%i输出整数,%f输出浮点数,%d输出数值
2. %-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来
3. %-4.2f 指格式化为小数,其中.2指保留2位小数
EOF

注释

#:单行

:<<EOF
多行
EOF

shell变量

value=“”:设置变量
$value:访问变量
readonly value:只读变量
unset value:取消变量

shell函数

# 设置函数
fun(){

return $()
}

# 使用函数
fun ……

# 解析
$?:获取函数返回值
$n:函数内部获取传入参数,注意n>=10时,需要加大括号
$#:传递到函数的参数个数
$*:输出所有参数
$$:脚本运行的当前进程ID号
$!:后台运行的最后一个进程的ID号
$@:与$*相同
$-:显示Shell使用的当前选项,与set命令功能相同。
$?:显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

文件包含

# 引用文件的方式
. ./test.sh
source ./test.sh

# 注意:引用的文件可以没有执行权限