shell基础
Posted countryboy666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell基础相关的知识,希望对你有一定的参考价值。
shell:
shell是linux内核和应用程序间的解释程序,向内核翻译及传达用户和程序的指令
正则表达式 \w \s \d \b 用法:
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空白符
\d 匹配数字 等价于[0-9]
\D 匹配非数字字符
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
其中,[^A-Z]表示除了不包含大写字母,^取反;^[A-Z]表示以大写字母开头
shell 脚本提前写好的可执行语句.
使用变量$X 变量失效uset X
示例:
#!/bin/bash
useradd $a 2> /temp/err.log
echo 1234567 | passwd --stdin $1 &>/dev/null
ls -l ./ | wc -l
统计问文件的数量
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
[email protected] 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。
#!/bin/bash
dir="/root/chrom"
fi [! -e $dir]
then mkdir -p $dir
#!/bin/bash
#-c 3 发送三个测试包 -i 0.2 时间间隔 -W 1等待时间 $1 获得终端输入
ping -c 3 -i 0.2 -W 1 $1 &> /dev/null
if [ $? -eq 0 ] ; then
echo "host $1 is up"
else
echo "host $1 is down"
fi
#!/bin/bash
#把输入读入 JF
read -p "请输入积分 (0-100):" JF
#要有空格
if [ $JF -ge 90 ] ;then
echo "$JF 分 "
elif [$JF -ge 80]; then
echo "$JF 分"
fi
创建并进入目绿:
mkcd()
mkdir $1
cd $1
循环:
for i in $sun
case : 以;;结束分支
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。
for i in 1.10
do
experss
done
检测多个主机的存活状态:
# 范围用 ..
for i in 1..254
do
ping -c 3 -i 0.2 -W 1 192.168.3.$i &> /dev/null
if [ $? -eq 0];then
echo "Host 192.168.3.$i is up"
else
echo "Host 192.168.3.$i is down"
fi
done
i=1
while [ $i -le 5]
do
echo
done
#[] 表达式
num = $[RANDOW%100+1]
while :
do
read -p " input 1---100:" guess
if [ $gess -eq $num ];then
echo " good"
else
echo "bad"
fi
列出不在线的主机:
i=1
while [ $i -le 254 ]
do
ip="192.168.3.$i"
#2> /dev/null” 代表忽略掉错误提示信息。
# 不显示ping的信息 &> /dev/null
& 是等于的意思
ping -c 3 -i 0.2 -W 1 $ip &> /dev/null
if [ $? -eq 0 ];then
echo "Host is up"
fi
let i++
done
中断:
for i in 1..254
do
[ $i -eq 3]&&break
done
echo " over "
球和:
sum=0;
while:
do
read -p "inpout 0 is end:" x
#&&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行;
#||则与&&相反。如果||左边的命令(命令1)未执行成功,那么就执行||右边的命令(命令2);或者换句话说,“如果这个命令执行失败了||那么就执行这个命令。
[ $x -eq 0] && break
sum=$[sum+x]
done
echo "sum is $sum"
字串截取:
$var:起始位置:长度
expr substr "$var" 起始位置 长度
echo $var | cut -b 起始位置 长度
字串一个替换:
$var/old/new
替换全部
$var//old/new
字符串掐头:从左网友
$var#*key
$var##*key 删除匹配最远的
字符串去尾: 从右往左
$var%key*
$var%%key*
MDIR="/var/spool/mail/root"
echo $MDIR%o*
批量修改后最名:
for FILE in *.doc
do
mv $FILE $FILE%.doc.txt
done
初值检测:
取值: $var: -word
echo $NM:-Tatrena
球和:
read -p "input num:" x
x=$x:-1;i=1;sum =0
while [ $i -le $x ]
do
let sum+=i;let i++
done
数组:
数组名=(val1 val2 val3...valn)
取值: $arry[index]
$arry[@]
$#arry[@]
$arry[@]:b_index:len
expect 基于TCL编程写的自动交互程序
host=192.168.3.104
expect << EOF
spawn ssh $host
expect "password" send "123456\r"
expect "#" send "touch /a.txt\r"
expect "#" send "exit\r"
正则表达式:
egrep [option] ‘exoress‘ file
前置命令 | egrep [选项] ‘则正式‘
== grep
^ 匹配首字母 ^abc 以abc开头的
$ 匹配行尾 abc$ 以abc结尾
. 匹配单个 除换行符之外的任意单个字符
+ 一个或则多个
? 最多一个
* 匹配任意次
n 匹配n次
n,m 匹配n-m 次
n, 匹配至少n次
\<th 匹配以th开头的单词
\<root\> 结尾 和\broot\b 一样
以上是关于shell基础的主要内容,如果未能解决你的问题,请参考以下文章