频道栏目
首页 > 系统 > Linux > 正文
Linux常用shell语法和命令
2016-11-28 09:21:00         来源:yiranyaoqiu的专栏  
收藏   我要投稿

If else

Shell共有三种三种if…else分支
- if…fi语句
- if…else…fi语句
- if…elif…else…fi语句

1、if…else语句

if [ expression ]
    then
Statement(s) to be executed if expression is true
fi

注意:expression 和方括号([ ])之间必须有空格,否则会有语法错误。

if…else也可以写成一行,以命令的方式来运行,像这样:

if test $[2*3] -eq $[1+5]; then echo 'The two numbers are equal!'; fi;

2、if条件表达式中的额外判断

字符串的判断

str1 = str2 两个字符串有相同内容、长度时为真 str1 != str2 -n str1 字符串的长度大于0返回真 -z str1 字符串的长度等于0时返回真 str1 字符串为非空返回真

比较两个字符串是否相等的时候,一般的做法是:

if [ "$test"x = "test"x ]; then 

主要考虑以下几点
- 使用单个等号
- 注意到等号两边各有一个空格:这是unix shell的要求
- 注意到”test"x最后的x,这是特意安排的,因为当test为空的时候,上面的表达式就变成了x = testx,显然是不相等的。而如果没有这个x,表达式就会报错:[: =: unary operator expected

数字的判断

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为真

复杂逻辑判断

-a 与 -o 或 ! 非

文件的判断

-e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真 -L filename 如果 filename为符号链接,则为真 -r filename 如果 filename可读,则为真 -w filename 如果 filename可写,则为真 -x filename 如果 filename可执行,则为真 -s filename 如果文件长度不为0,则为真

判断/home/oicq/script/get_random_shm_key.sh是否存在

if [ -e /home/oicq/script/get_random_shm_key.sh ]

判断文件大小是否为空

if [ ! -s ${REMOTE_FILE} ]
    then
        SH_error_msg "${REMOTE_FILE} file is empty"
        return 1
    fi

循环

For

for循环的一般格式为:

for 变量 in 列表
do
    command1
    command2
    ...
    commandN
done

列表 是一组值(数字,字符串等)组成的序列,每个值通过空格分隔。每循环一次,就将列表中的下一个赋给变量。

in 列表是可选的,如果不用它,for 循环使用命令行的位置参数

顺序输出当前列表中的数字
for loop in 1 2 3 4 5
do
    echo "The value is: $loop"
done

运行结果如下:

The value is: 1
The value is: 2
The value is: 3
The value is: 4
The value is: 5
1到100输出
for i in {1..100}  
do  
    echo $i  
done  
显示主目录下以.bash开头的文件
#!/bin/bash
for FILE in $HOME/.bash*
do
   echo $FILE
done

运行结果如下:

/root/.bash_history
/root/.bash_logout
/root/.bash_profile
/root/.bashrc

while

while循环的一般格式为:

while 条件语句

do

action

done;

示例:从文件中读取内容

while read line;do
    echo $line;
done < /etc/hosts;

替换

1、命令替换

命令替换$(cmd)以及`cmd`

$ ls 
a b c 
$ echo $(ls) 
a b c 
$ echo `ls` 
a b c

对于echo $(ls),shell执行时会先执行$(ls),得到其标准输出,在用得到输出替换原来位置上的$(ls),再执行echo命令。

注意:$(cmd)中的命令的错误输出是不会被替换的,只有标准输出

$ var=$(cat d)
cat: d

这里由于文件d在当前目录不存在

点击复制链接 与好友分享!回本站首页
上一篇:Linux环境变量PATH的增添和删除操作
下一篇:centor 上常用的命令
相关文章
图文推荐
点击排行

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

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