如何写一个简单的shell脚本
最近是实习的时候一直在linux服务器里搬砖,总是敲一些重复的命令,让我有些烦躁,能用代码解决的事情就不要敲键盘,本小辣鸡决定学习下shell脚本怎么使用。
首先,我们先创建一个shell脚本,记得创建玩之后给它修改一下权限,不然不能执行有个p用
$ vim nb.sh
$ sudo chmod 777 nb.sh
创建完之后,我们开始向里面写入内容了,先不管网上说的,我个人理解,shell脚本就是将一些终端里可以执行的命令放到一个文件了,省得敲这么多字,简直懒人必备啊。接下来,我来介绍一下常用的一些辅助命令,和编写语法(因为我自己在边学习边写,所以可能会不全,我会慢慢补全的)
1. 在终端中打印
本辣鸡以前从来没有在终端中打印过东西,刚写脚本时,里面好几个命令,我向每执行完一个命令输出一句话。
#nb.sh文件里面
#!/bin/bash
echo "I am nb"
就这么简单
2. 传参
写脚本不传参数叫什么写脚本
$ ./nb.sh arg1 arg2 arg3 (.......more arg)
一般这些arg都是参数,我们可以通过这些arg,来对脚本里面代码进行控制,脚本里$0 表示"./nb.sh"这个命令,$1表示arg1,2表示arg2,以此类推。如果脚本前面加了sudo仍然不变,2表示arg2,以此类推。如果脚本前面加了sudo 仍然不变,2表示arg2,以此类推。如果脚本前面加了sudo仍然不变,不会认sudo的。现在举个栗子,写个显示所有参数的脚本
#nb.sh文件里面
#!/bin/bash
for args in $@
do
echo $args
done
这个代码就可以打印出所有的参数了。
###3. 条件语句和判断
能调用参数之后,肯定少不了条件语句和判断,shell脚本这个还是很恶心的。
- if elseif else
这个条件判断
if command
then
command
elif command
then
command
else
command
fi
如果我们需要在条件里面写入判断,这里就比较奇怪,网上的代码有些无法复现,会报错command not found
我写出我电脑中实现的方法
#!/bin/bash
if [ $1 -eq 1 ]
then
echo "nb 1"
elif [ $1 -eq 0 ]
then
echo "nb 0"
else
echo "nb must input"
fi
相等必须得使用-eq, 而且if后面的方框前后必须有一个空格,像网上的==、>=、<=都用不了。下面总结一下判断符号。
符号 | 含义 |
---|---|
-eq | 等于 |
-ne | 不等于 |
-gt | 大于 |
-lt | 小于 |
-ge | 大于等于 |
-le | 小于等于 |
3 单引号双引号和反引号
shell 脚本中引号分为三种,单引号、双引号和反引号。
- 单引号
单引号括起来的字符只会作为普通字符出现,特殊字符用单引号括起来也会失去其原有的意义 - 双引号
双引号括起来的字符,除$ \ ’ “属于特殊字符并保持其特殊功能之外,其余字符仍作为普通字符对待。 - 反引号
反引号括起来的字符串会被解释成命令行,执行时shell首先执行该命令行,然后以它的标准输出结果取代整个反引号部分。