简单语法

判断

最简单的判断逻辑是:

if [ condition1 ]; then
   statement1
elif [ condition2 ]; then
  statement2
else
  statement3
fi
# 或者用test
if test condition1 ; then
   statement1
fi

注意:condition两边与[]之间必须至少有一个空格

判断条件

shell中判断条件不同于其他语言中的<,>,==,<=,>=那么直接,常见的有下列几种:

-eq  等于(==)
-ne  不等于(!=)
-gt  大于(\>)
-lt  小于(\<)
-le  小于等于
-ge  大于等于
-z  空串
-n  非空串
==  两个字符相等
!=  两个字符不等

组合判断

-a 且
-o 或

特殊用法[[ ... ]]

字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,比如[[ hello == hell? ]]结果为真&&、||、<和> 操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[ ]结构中的话,会报错。比如可以直接使用if [[ $a != 1 && $a <= 5 ]],如果不使用双括号, 则为if [ $a -ne 1] && [ $a -le 5 ]或者if [ $a -ne 1 -a $a -le 5 ]

文件的判断

-f   判断后面是否为一个文件
-d   判断后面是否为一个目录
-e   判断后面对应的文件是否存在
-s   判断文件是否存在且不为空

switch case

case "$Variable" in
  # 列出需要匹配的字符串
  0) echo "There is a zero.";;
  1) echo "There is a one.";;
  *) echo "It is not null.";;
esac

循环

for 循环

# {1..3} == `seq 1 3`
for Variable in {1..3}
do
  echo "$Variable"
done

或传统的"for循环",但需要加两层括号(两层的小括号内可以写C语言中的语句):

for ((a=1; a <= 3; a++))
do
  echo $a
done

在其他命令的结果上执行for循环:

for Output in $(ls)
do
  cat "$Output"
done

while 循环

while [ condition ]
do
  echo "loop body here..."
  break
done

命令行

$#   命令行参数个数
$0   当前脚本名
$n   第n个参数值,n可取1,2,3...
$@   所有命令行参数
$?   上一个命令的返回值
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • TWIG 模板的主要特征。 高效:Twig将模板编译成了优化了的PHP文件,与原生的PHP代码比较而言,性能损耗非...
    Fairyin阅读 12,688评论 1 3
  • 1.在swift中字符和字符串都是用""括起来,若是需要区分它们的类型,字符必须制定Charater 2.字符串的...
    傻傻小萝卜阅读 1,924评论 0 0
  • 两个人的相遇是一场缘分 我们穿越千上万水 躲过各种意外 然后相遇 在我们还不明白珍惜的时候 请让我们来数算一下 我...
    生命温度加1阅读 2,206评论 0 0
  • 美国的一号公路是沿太平洋海滨修建的一条公路,由于它自身的地理环境,一侧是一望无际的太平洋,碧波万顷;另一侧是国家公...
    松鼠的日子阅读 1,670评论 0 0
  • 好朋友一定要经常在一起吃喝玩乐吗?不在一起玩耍感情会变淡吗? 我觉得不一定。 只是经常在一起吃喝玩乐会有更多的机会...
    梁老虎阅读 7,891评论 0 0