shell编程基础知识总结

目前用到shell的情况比较简单,暂时总结一部分,日后用到时回顾补充

1. linux的默认shell是bash,shell脚本开头需要定义用哪种解释器

例:#!/bin/bash

2. 运行方法

chmod +x test.sh
./test.sh

/bin/sh test.sh

3. 变量

所有变量默认为字符串,无论有没有引号。

声明:变量名不加$,变量名和等号之间不能有空格

使用:在变量名前加$,可用{}界定边界 echo “I am good at ${skill}Script”

赋值:等于号,但涉及计算的需要用命令:

(()):双小括号,整数运算符 
echo $(($a+2))
echo ((2>1))    输出1(真1假0)
((a=$b+1+2))

let:let val=$val+1

expr:

只读变量:readonly命令

myUrl="http://www.google.com"
readonly myUrl

删除变量:unset variable_name

读取文件:

cat test.txt | while read line
do
echo $line
done

while read line
do
echo $line
done < test.txt
4. 字符串

建议使用双引号,里面可以出现变量和转义字符
下列输出相同:
greeting=“hello, “$your_name” !”
greeting_1=“hello, ${your_name} !”

长度:${#str}
截取:${str:1:4}
查找:grep(返回查找到的字符串)、=~(判断是否包含)

5. 数组

只有一维数组,定义:name=(val1 val2 val3 …)
长度:${array[*]}

6. 运算符
7. 注释

单行#,多行使用

:<<!
...
...
!
8. 参数

调用时可以加上参数,按顺序默认命名为$1,$2,…
$0是文件名
$#是参数个数
$$是脚本运行的当前进程ID号
$?是显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误

9. 输出

echo或printf(printf同c,不加括号)

10. if test命令
if test ...
then
  ...
elif ...
then
  ...
else
  ...
fi
数值比较:
参数说明
-eq等于则为真
-ne不等于则为真
-gt大于则为真
-ge大于等于则为真
-lt小于则为真
-le小于等于则为真
字符串:
参数说明
=等于则为真
!=不相等则为真
-z字符串 字符串的长度为零则为真
-n字符串 字符串的长度不为零则为真
文件测试
参数说明
-e 文件名如果文件存在则为真
-r 文件名如果文件存在且可读则为真
-w 文件名如果文件存在且可写则为真
-x 文件名如果文件存在且可执行则为真
-s 文件名如果文件存在且至少有一个字符则为真
-d 文件名如果文件存在且为目录则为真
-f 文件名如果文件存在且为普通文件则为真
-c 文件名如果文件存在且为字符型特殊文件则为真
-b 文件名如果文件存在且为块特殊文件则为真

11. 循环

有for while until case break continue

for var in item1 item2 ... itemN
do
    ...
done
while [[ condition ]]
do
    ...
done
until [[ condition ]]
do
    ...
done
case val in
val1) 
  ...
  ;;
val2)
  ...
  ;;
esac

12. 输入输出重定向

命令说明
command > file将输出重定向到 file
command < file将输入重定向到 file
command >> file将输出以追加的方式重定向到 file
n > file将文件描述符为 n 的文件重定向到 file
n >> file将文件描述符为 n 的文件以追加的方式重定向到 file
n >& m将输出文件 m 和 n 合并
n <& m将输入文件 m 和 n 合并
<< tag将开始标记 tag 和结束标记 tag 之间的内容作为输入
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值