Shell编程之Csh和Bash的经验总结

前言

Shell 编程能提升我们工作效率,但 bash 和 csh 有一定的区别。下面将整理两者不同,以及常用的语法经验。具体代码可以去我的GitHub下载。

1. 变量和环境变量设置

1. csh

set x = 1
echo $x

setenv MATH true

2. bash

x=1
echo $x

MATH=true
export MATH=true
echo $MATH

2. if语句

1. csh

if (2 != 3 ) then           
  echo "2 != 3"                               
endif

2. bash

if [[ 2 != 3 ]];then
  echo "2 != 3"
fi

3. while循环

1. csh

set sum = 0
set i = 1
while ($i <= 10)
   set sum = `expr ${sum} + ${i}`
   set i = `expr ${i} + 1`
end
echo 'sum = '$sum

输出:sum = 55

2. bash

i=1
sum=0
while [[ $i -le 10 ]] 
do
  ((sum += i))
  let i++
done
echo 'sum = '$sum

输出:sum = 55

4. 数组

1. csh

echo 'array_start'
set array = (5, 4, 3, 1, 2)               
echo $#array                                     
foreach i (${array[*]})
  echo $i
end
echo 'array_end'

输出:
在这里插入图片描述

2. bash

echo 'array_start'
array=(5 4 3 1 2)
echo ${array[@]}
for i  in  ${array[@]}; do
  echo $i
done
echo 'array_end'

输出:
在这里插入图片描述

5. 获取当前文件路径

1. csh

#!/bin/csh
#Method 1
set script_dir=`readlink -f -- "$0"`
set CURDIR=`dirname -- $script_dir`
echo $CURDIR

#Method 2
set root=`pwd`
echo $root

2. bash

#!/bin/bash
#Method 1
CURDIR=$(cd $(dirname ${BASH_SOURCE[0]}); pwd )
echo $CURDIR

#Method 2
root=`pwd`
echo $root

6. 获取当前时间

1. csh

#!/bin/csh
set ddate=`date`
echo $ddate

2. bash

#!/bin/bash
date=$(date)
echo $date 

7. 产生随机数并测试

1. csh

#!/bin/csh 
set extraRatio = 10

set sum = 0
set ij = 1
while ($ij <= 100)
  set rand = `date +%N`
  set rand100 = `expr ${rand} % 100`
  if ( `expr ${rand100}` < ${extraRatio} ) then
    set sum = `expr ${sum} + 1`
  endif
  set ij = `expr $ij + 1`
end

echo ${sum}

2. bash

#!/bin/bash

extraRatio=10
sum=0
ij=0
#echo $ij
while [[ $ij -le 100 ]]
do
  rand=`date +%N`
  #echo $rand
  rand100=`expr ${rand} % 100`
  #echo $rand100
  if [[ ${rand100} -le ${extraRatio} ]]; then
    ((sum += 1))
  fi
  let ij++
done

echo 'sum = '$sum

8. 补充

1. 查看系统默认用的 Shell

echo $SHELL

2. 查看系统所拥有的 Shell

cat /etc/shells

  • 4
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值