朋友找我在一台机器上帮忙安装下discuz。想着搭建过好几次的lnmp了,但是还没有使用过“一键安装”的自动化脚本,去网上有搜索出来,但是运行的时候发现用root运行别人的脚本还是真危险的事情,于是明白这不是个轮子,而是个井,每个程序员有必要自己挖一口的了。所以想着自己写个自动化安装lnmp的脚本lnmp_auto。
源代码在github上:https://github.com/jianfengye/lnmp_auto
本文记录下写的过程中遇到的几个shell问题:
如何判断当前用户是否是root用户
1
2
3
4
5
|
if
[
$UID
-ne 0 ]
then
echo
"Error: You must be root to run the script!"
exit
1
fi
|
如何判断机器是64位还是32位
有很多种方法,但是如果要输出最简单明了的估计是这种方法了:
1
|
MACHINE_LONG_BIT=$(getconf LONG_BIT)
|
如何判断一个组存在,并且这个组内有某个用户
1
2
3
4
5
6
7
8
9
10
11
12
13
|
if
grep -q mysql /etc/group
then
echo
"mysql group exists"
else
groupadd mysql
fi
if
groups mysql | grep -q -E
' mysql(\s|$)'
then
echo
"mysql user exists"
else
useradd -r -g mysql mysql
fi
|
如何将一个目录内的所有文件批量软连接到另外一个目录内
1
2
3
4
5
|
FILELIST=`ls
$BINARY_MYSQL_PATH
/bin`
for
FILENAME in
$FILELIST
do
ln -sn --force
$BINARY_MYSQL_PATH
/bin/
$FILENAME
/bin/
$FILENAME
done
|
在sed中要替换的正则包含/符号和变量$XXX怎么办
我们一般使用sed "s/XXXX/OOOO/" file来做替换
但是如果XXXX中包含/并且还有可能包含变量的话,就需要将/符号替换成:了
1
|
sed -i
"s:/usr/local/mysql/data:${BINARY_MYSQL_PATH}/data:"
mysql.server.init
|
如何注释一段代码
在shell中注释一行代码是#,那么注释一段代码就需要使用:<<BLOCK
1
2
3
4
5
6
7
|
:<<BLOCK
BINARY_MYSQL_PATH=
"$ROOT_PATH"
/binary/mysql
if
[ ! -d
"$BINARY_MYSQL_PATH"
]
then
mkdir
-p
$BINARY_MYSQL_PATH
fi
BLOCK
|
shell如何进行交互
使用read命令将输出记录到一个变量中
1
2
3
4
5
6
|
checkinstall=
"n"
read -p
"Are you sure want to install php into service?(y/n):"
checkinstall
if
[
$checkinstall
=
"y"
]
then
…
fi
|
如何关闭selinux
1
|
sed -i
"s/enforcing/disabled/"
/etc/selinux/config
|
这里的i参数就是在当前文件直接做替换,如果觉得不保险可以先做备份
如何获取运行shell的shell文件夹路径
这里不是获取当前的路径(当前路径直接使用pwd就可以获取),比如我在/home/yejianfeng,运行sh lnmp_auto/lnmp_auto.sh,如何获取到lnmp_auto.sh的文件夹路径/home/yejianfeng/lnmp_auto/
本文转自轩脉刃博客园博客,原文链接:http://www.cnblogs.com/yjf512/p/3364682.html,如需转载请自行联系原作者