shell学习笔记

shell学习笔记

条件测试

命令test 或[ 表达式 ] 判断逻辑,0表示TRUE,1表示FALSE
$?: 最后一次返回结果

var=56
test $var -gt 3
ehco $?
返回结果为:0 ,结果为真

常用测试命令
[ -d DIR ] 目录判断
[ -f FILE ] 文件判断
[ -z STREING ] STRING的长度等于0为真
[ -n STRING ] STRING的长度不为0为真
[ ARG1 OP ARG2 ] ARG1/2是整数或取值为整数的变量。
OP 包含如下逻辑符号
-eq 等于
-ne 不等于
-lt 小于
-le 小于等于
-gt 大于
-ge 大于等于

注:
[ 表达式 ] 表达式和[]之间必须有空格

逻辑运算:
! 逻辑反
-a 逻辑与
-o 逻辑或

注:
应该把边变量取值放在双引号中

分支

if/then/else/elif/fi

#! /bin/bash

if [ -d test_test ]; then
	echo "It's a dir"
elif [ -f test_test ]; then
	echo "It's a file"
else
	printf "unkonwn\n"
fi

if 后可以不用;但是那样then需要换行写

read可以等待用户输入

case/esac
没有switch,break用;;代替

#! /bin/bash
read YES_OR_NO
case "$(YES_OR_NO)" in
	yes|y|Yes)
		echo "hello";;
	[nN]*)
		echo "byebye";;
	*)
		echo "error input"
	exit 1;;
esac
exit 0

循环

for

for ITERM in $(ls); do
	printf "ITERM "
	if [ -d "$ITERM" ]; then
		echo "It's a DIR"
	elif [ -f "$ITERM" ]; then
		echo "It's a file"
	fi
done

while

while [ ARG ]; do
done

break 和continue
break[n]可以跳出基层循环;
continue跳过本次循环

位置参数和特殊变量

$0 相当于main函数的argv[0]
$1、$2、$3 … 函数参数
$# 参数的个数
@ , @ , @* 所有参数列表
$? 上一条命令的exit status
$$ 当前进程号

shift:变量出队,$1先出队,调一次,一个变量出队,$2–>$1

输入输出

echo [opt] string
-e 解析转移字符
-n 不回车换行

管道 |
把一个命令的输出传递到另一个命令做输入

tee
tee命令把把结构输出到标准输出,并保存一份到文件中。
df -k | tee a.txt
tee -a a.a.txt 表示追加

文件重定向
cmd > file 标准输出重定向
cmd >> file 追加
cmd > file 2>&1 标准出错重定向到1所指的file里,2为标准出错,1位标准输出。
cmd >> file 2>&1 追加
cmd < file1 > file2 输入重定向到file1 ,输出重定向到file2
cmd < &fd 把文件描述符fd作为标准输入
cmd > &fd 把文件描述符fd作为标准输出
cdm < &- 关闭标准输入

函数

#! /bin/bash
echo $0 #当前函数的进程名
echo $1 #命令行参数
echo $2
foo()
{
	echo $0 #当前函数的进程名
	echo $1  #函数参数
	echo $2
}
foo 11 22 #函数调用,入参11 22

shell脚本调试方法

-n 读一遍脚本,当不执行。检查语法错误用。
-v 一边执行脚本,一边将执行过的脚本命令打印到标准错误输出。

#! /bin/bash -v

-x 提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。指定某一些命令显示。

在这里插入代码片
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值