shell脚本ifd
‘壹’ 在shell脚本中有个语句是if [ -d $1"/"$file ],其中 $1"/"$file是什么意思
$1是指你运用这个脚本后跟着的第一个词组,比如你这个脚本命名为shell.sh,那么shell.sh /etc时,/etc代表$1 , for file in ` ls $1 ` 这段语法是代表以file为变量枚举出$1也就是/etc下所有文件,For...In 声明用于对数组或者对象的属性进行循环操作。
‘贰’ linux的shell 脚本里怎么用if 判断文件大小呀
find有一个参数 -size +10000M
你可以定义一个变量 它的值为
查找目录下 是否满足同时名字叫123.cap 并且尺寸大于10000M的
是就赋予var
先执行tcpmp 后台运行
然后做一个循环 每隔一秒判断这个var
var=$(find . -name "123.cap" -size +10000M)
判断这个var是否不为空
当不为空 那么代表文件超出10g了 那么就完毕吧 exit
思路这样 你自己试试看
‘叁’ Shell基本脚本命令使用教程
1、本地变量:用户私有变量,只有本用户可以访问,保存在家目录的 .bash_profile、.bashrc文件中
2、全局变量:所有用户都可以使用,保存在 /etc/profile 文件中
3、用户自定义变量:用户自定义,比如脚本中的变量
定义变量格式: 变量名=值 (=两边不能有空格)
字符串用单引号或者双引号引起来
shell支持正则表达式的常见命令:grep、sed、awk。
sed 是一个行(流)编辑器,非交互式的对文件内容进行增删改查操作
awk 能够集过滤、提取、运算为一体,它的工作方式是读取数据,将每一行数据视为一条记录,每条记录以字段分隔符分成若干字段,然后输出各个字段的值。平行命令还有 gawk、pgawk、dgawk。
‘肆’ linux shell 脚本中if语句的用法 在脚本中使用if if[! -w “$logfile” ] 为什
if[!-w"$logfile"]
thenecho"notwriteable"
echo"notwriteableagain"
fi
注意空格,shell里面有的地方必须有空格,有的地方必须没有空格。[ ]前后都要有空格
‘伍’ Shell 脚本 if 判断后,怎么终止当前脚本但不退出 shell
代码如下:
if list then
do something here
elif list then
do another thing here
else
do something else here
fi
EX1:
复制代码代码如下:
#!/bin/sh
SYSTEM=`uname -s` #获取操作系统类型,我本地是linux
if [ $SYSTEM = "Linux" ] ; then #如果是linux的话打印linux字符串
echo "Linux"
elif [ $SYSTEM = "FreeBSD" ] ; then
echo "FreeBSD"
elif [ $SYSTEM = "Solaris" ] ; then
echo "Solaris"
else
echo "What?"
fi #ifend
基本上和其他脚本语言一样。没有太大区别。不过值得注意的是。[]里面的条件判断。
‘陆’ shell 脚本 if 的用法小问题
1. 执行shell脚本的时候加上 -x ,执行脚本时会把过程列出来!(有利于我这种新手学习)sh -x shell (./shell 也可以执行shell脚本 但是没有-x参数)2. 传的值的个数大于 read 定义的接受变量的时候会把多余的值都给最后一个变量!!3. expr 对整数型变量进行运算 如果运算结果不是整数小数点后面的全部省去 (乘号要用转意字符'/') .4. 在shell脚本里面 执行一条输出的命令(pgrep mysqld)怎么吧输出的结果作为值赋给变量?web=$(/usr/bin/pgrep mysqld) #可以用 变量=$(命令) 和 变量=`命令` 来吧命令执行的结果赋给变量
if [ $web = ]
then
/etc/init.d/mysql start
fi
5.查看某个命令所在的位置可以用 whereis /which/type 三个命令来查看6.awk命令的应用作用:分段提取! (一行为单位来进行分段)awk -F [分隔符] '条件 动作' /对象例: awk -F : '$3==0 {print $1}' /etc/passwd例: awk -F : '$1 == root {print $1} ' /etc/passwd# -F : 用:分割passwd每行的内容 ($1 指第一段内容 $2 指第二段内容$n 指第n段内容)# ' 匹配 动作' 单引号里面写的是 匹配命令和打印动作 匹配$3==0 第三段等于0 打印{print $1} 打印第一段内容 ($3 == 0 匹配出行 在打印出这些行的第一段内容 )
‘柒’ linux 下shell 脚本 if条件,想写 a=0且b=0 或者c!=0,应该怎么写啊、我写成if [$a -eq 0] && [ $b -eq 0
root@Bizbox:~# a=0
root@Bizbox:~# b=0
root@Bizbox:~# c=5
root@Bizbox:~# if [ $a = 0 -a $b = 0 ]&&[ $c != 0 ]; then
> echo success
> fi
success
注意方括号中前后的空格!
‘捌’ 关于shell 中的if 逻辑表达式。
if expression
then
commands
fi
这是if其中的一种结构,在结构中就能看到if 后面接的是什么。
这个后边描述的是你想要干什么,根据你的需要去描述出来然后进行下一步的操作
这个并不是固定的。你还是看书吧。。书上写的比这里回答的人描述的详细。
if和then的语法 如果if和then处在同一行 中间需要用;隔开,如果不在同一行可以不用写
if grep "file " /tmp/tmp.txt ;then 这属于语法格式,这个是固定的。其实一行内多个命令之间都需要用;号隔开。如果不在同一行就不用考虑。就像你在终端输入命令一样,一行一个命令。一行多跳命令需要用;隔开。。也是这个道理。至于!取反。。!属于操作符 举个例子来说 $A = $B 如果结果匹配 执行 then 不匹配执行else $A != $B !=就是不等 !进行取反操作 如果判断结果匹配 执行then 不匹配执行eslse
哇。。说了好多废话。。我还是强烈建议你仔细看书。。
______________________________________________
1)我还是建议你看书,而且是看对书,我说的这些都是书上有的。
关于[]你不应该理解成test语法才需要 test就是[] []就是test
抛开if不讲 test也可以单独使用 比如test xxx 写成 [xxxx]意思是一样的。
至于里边加的参数,就涉及到你的需求 要干什么 要判断字串?整数?表达式?文件?
跟用test 还是用 []并没有太大关系 举个例子 test $? -le 0 和 [ $? -le 0] 意思是一样的
2)要解释if ! grep "file" /tmp/tmp.txt ; then 首先你要明白系统所设置的操作符。比如= 比如+、-、*、/、这些都是操作符,至于! 属于位操作符, 我下班了。有空聊
‘玖’ linux的shell 脚本里怎么用if 判断文件大小呀
需要几个工具 基本上思路是 用 配合awk取得文件大小 ,然后if判断
伪代码如下
s=` -k logfile|awk '{print $1}'`
if [ $s -gt 1024000000 ]
then
停止oracle监听进程
rm -rf logfile && touch logfile
启动oracle监听进程
else
continue
fi
‘拾’ shell 脚本的if语句报错
#!/bin/bash
read-p"pleseinputonenumber:"k
forain{1,2,3}
do
forbin{1,2,3}
do
forcin{1,2,3}
do
fordin{1,2,3}
do
n=$((a*1000+$b*100+$c*10+$d))#shell中不能直接执行算术运算,要加上$(())
m=$((n%80))
if[$m-eq$k];then#[]方括号与条件要用空格分开
if[$a-eq$c];then
if[$b-eq$d];then
echo$n
fi
fi
fi
done
done
done
done