Shell 脚本初学

其实这个是因为服务器卡不够用,为了充分占用一块卡的资源,需要写个shell脚本帮忙运行网络= =
shell是一种脚本语言(区别于编译语言),在UNIX上基本都通用。在我看来,这个脚本主要并不是用来计算,而是用来管理打杂的。

Hello world!


第一个程序,还是输出Hello world吧。
首先建立一个脚本文件

1
vim hello.sh

进入vim程序,输入:

1
2
#!/bin/bash
echo "Hello World !"

“#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell,bash是比较通用的一个shell。echo命令用于向窗口输出文本,其实你直接在shell中输入echo Hello World!。也会有相同的效果。
即可。
之后运行需要退出,

1
./hello.sh

但会出现:

1
permission denied: ./hello.sh

没有权限,增加之后再试试:

1
2
3
chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本
Hello world!

成功~
有了输出也会有输入,输入的命令是read

1
2
3
4
#!/bin/bash
echo "What is your name?"
read Name
echo "Hello, $Name"

这时候执行会等待你输入,并显示出来。

变量


shell中变量的赋值很简单,只需要=即可

1
variableName="value"

但是要注意:

  • 变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样
  • 首个字符必须为字母(a-z,A-Z)
  • 中间不能有空格,可以使用下划线(_)
  • 不能使用标点符号
  • 不能使用bash里的关键字(可用help命令查看保留关键字)

如果观察上面读取语句,会发现使用的时候需要在变量前加上$符号:

1
2
3
your_name="Myname"
echo $your_name
echo ${your_name}

推荐在变量外加上大括号,用于和其他字符区分。
既然是变量,就可以多次赋值修改,但也有例外:

1
readonly variableName

可将变量改为只读变量(也就是常量吧……)。
最后也可以删除变量:

1
unset variable_name

但不能删除只读变量。

还是先干工作吧……


其实在linux中输入的命令,就是在解释器中运行程序,而shell脚本让这个过程更为集中、简单。做类比的话,shell就是python,.sh就是.py。那么我们如果想要运行程序,直接写我们在命令行里的命令就好了。

1
2
3
#!/bin/bash
python work1.py
python work2.py

这样就不用担心卡在完成工作前被占用了~