shell脚本和其他程序文件性质相同, 通过脚本可以省去很多重复性劳动, 例如给集群内一百台机器copy文件.
接下来编写一个输出hostname的shell脚本.
#! /bin/bash
name=`hostname`
echo hostname=$name
>>> hostname=master
第一行: 声明这是个bash执行文件. 一般shell脚本要通过sh或bash命令来执行.
第二行: 声明了一个变量name, 它等于命令hostname的返回值. 注意hostname的两侧不是单引号, 是数字1左边的符号. 如果是引号, 会被认为是普通的字符串.
另外. 等号两侧是不能有空格的.
第三行: echo输出, $后面跟之前声明过的变量.
shell文件命名
你的shell文件可以随意命名, 无需后缀(例如.txt, .py之类的). 但一般都会命名为*.sh, 主要是为了能一眼看出它是shell脚本.
shell存储位置
你可以自己设置一个专属的shell存放位置, 只要执行bash时能记住路径就行. 但一般来说, 大家都会放在/usr/local/bin目录下, 这是约定俗成的, 大家都很有默契地会把自制的shell脚本放在这个文件夹. 如果需要授予root权限, 就授予吧.
shell执行之前必须做的工作
虽然你将shell文件存入了文件夹, 但对系统来说, 它只是一个普通的文件, 系统并不会让任何人有权利执行它. 所以你必须手动将执行权赋予用户.
chmod +x myshell.sh
chmod用于修改权限.
+x, 是a+x的简写, 意为将执行权赋予给所有人.
如果只想赋予给特定的用户(例如root用户, 或者你创建的其他普通用户), 你就要切换到那个用户, 然后再执行chmod u+x myshell.sh
. u就是user, 用户的意思.
其他chmod的用法请自己搜索.
最后, myshell.sh就是你shell脚本的名字.
每次输入路径都很麻烦, 怎么办?
设置环境变量.
系统会自动在环境变量的预设目录下寻找文件.
环境变量的文件在/etc/profile
用vim打开后, 将你的shell文件夹路径以下列形式写入:
export PATH=$PATH:这里写你的shell文件夹的绝对路径
例如
export PATH=$PATH:/usr/myshell
即使存放在/usr/local/bin
下, 也要写环境变量.
写完后, 执行source /etc/profile
来重新加载环境变量.
接下来就可以随意使用shell脚本了.
而且因为脚本里写了/bin/bash, 我们可以直接用文件名直接执行, 而不需要bash shell.sh