频道栏目
首页 > 资讯 > 其他综合 > 正文

常用shell语法

17-05-11        来源:[db:作者]  
收藏   我要投稿

if语句

SYSTEM=`uname -s`
if [ $SYSTEM == "Linux" ] ; then
    echo "Linux"
elif [ $SYSTEM == "Darwin" ] ; then
    echo "Darwin"
else
    echo "What?"
fi

for语句

数字
for ((i=1; i<=10; i++))  
do  
    echo ${i}  
done

for i in `seq 1 100`
do
    echo $i
done

i=1
while (($i < 100)) 
do
    echo $i
    i=`expr $i + 1`
done

for i in {1..100}
do
    echo $i
done
区间遍历
range="1 2 3"  
for i in ${range}  
do  
    echo ${i}  
done  

range_hour="1 2 3 4 5"  
for hour in ${range_hour}  
do  
    range_min="02 12 22"  
    for min in ${range_min}  
    do  
        echo ${hour} ${min}
    done
done
文件路径遍历
for i in `ls ../`  
do  
    echo ${i}  
    ls ../${i}  
done  

字符串判断

# true length>0
if [ -n "haha" ] ; then
    echo "true"
else
    echo "false"
fi

str1 = str2     当两个串有相同内容、长度时为真 
str1 == str2    当两个串有相同内容、长度时为真 
str1 != str2    当串str1和str2不等时为真 
-n str1         当串的长度大于0时为真(串非空) 
-z str1         当串的长度为0时为真(空串) 
str1            当串str1为非空时为真

数字判断

# true 10 equal 10
if [ 10 -eq  10 ] ; then
    echo "true"
else
    echo "false"
fi

int1 -eq int2       两数相等为真 
int1 -ne int2       两数不等为真 
int1 -gt int2       int1大于int2为真 
int1 -ge int2       int1大于等于int2为真 
int1 -lt int2       int1小于int2为真 
int1 -le int2       int1小于等于int2为真

文件判断

file=`ls .`
if [ -s ${file} ] ; then
    echo "true"
else
    echo "false"
fi

-r file     用户可读为真 
-w file     用户可写为真 
-x file     用户可执行为真 
-f file     文件为正规文件为真 
-d file     文件为目录为真 
-c file     文件为字符特殊文件为真 
-b file     文件为块特殊文件为真 
-s file     文件大小非0时为真 
-t file     当文件描述符(默认为1)指定的设备为终端时为真

多个判断逻辑合并

file=`ls .`
if [ -s ${file} -a -x ${file} ] ; then
        echo "true"
else
        echo "false"
fi

-a      与 
-o      或 
!       非

传参

echo "first parameter si $1";
echo "parameter number is $#";
echo "all parameter $*";

# $* 只是一个元素
echo "-- \$* ---"
for i in "$*"; do
    echo $i
done

# $@ 表示多个参数
echo "-- \$@ ---"
for i in "$@"; do
    echo $i
done

休眠

sleep 1 睡眠1秒
sleep 1s 睡眠1秒
sleep 1m 睡眠1分
sleep 1h 睡眠1小时

既定标识符

$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

字符串操作

# 获得字符串的长度
${#task_file}

# 从第2个字符开始,截取8个
${task_file:1:8}

字符串切割

info='abcd;efgh'
fstr=`echo $info | cut -d \; -f 1`
sstr=`echo $info | cut -d \; -f 2`

数字运算

s=0                                    #定义一个求和变量,初值为0。
t=`expr$1**$2`                         #用expr改变运算顺序,求x的y次方。
t=$[t*3]                               #t乘以3。
s=$[s+t]                               #结果相加。
t=$[$1**2]                             #求x的平方。
t=$[t*4]                               #结果乘以4。
s=$[s+t]                               #结果相加。
t=`expr$2*5`                           #求5y的值。
s=$[s+t]                               #结果相加。
s=$[s+6]                               #结果加上6。
echo$s                                 #输出结果。
echo$((a%b))                           #取余

数组遍历

#echo ${array[0]}  
#echo ${array[index]}  

for data in ${array[@]}  
do  
    echo ${data}  
done  
相关TAG标签
上一篇:TCP为什么需要三次握手?
下一篇:ASP.NET 教程之Web Pages
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站