初识shell
概述
Shell 是一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统(主要是Linux)内核的服务。
Linux默认的shell是bash shell
例子:
#!/bin/bash
echo "Hello World!"
提示
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell
- 运行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
# 注意:引用的文件可以没有执行权限