bash编程笔记

bash编程笔记

为了能提高linux系统下的工作效率,今天打算认识下bash编程
把今天学过的例子堆过来,加上简单地注释,方便以后查阅

  • 初识bash

#!/bin/bash #表示这是个bash文件,需要用到/bin/bash程序来解释执行
#This is a simple bash script 
a="同学你好"
echo "A is:"
echo ${a}啊
grep "hello" file.txt | wc -l #将第一个命令的输出作为第二个命令的输入
tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print` #将find的结果作为tar的参数 注意:是反短斜线`
  • bash中的 Test 运算符

#判断文件是否存在
if [ -e myfile ]; then
  echo myfile exits
else 
  touch myfile
  echo myfile created
fi

#判断文件是否相同
echo 1 >file1
echo 2 >file2
if ! diff -q file1 file2; then
  echo file1 file2 diff
else
  echo file1 file2 same
fi

#判断字符串非空
str1="ss"
if [ ! -z "$str1" ]; then
  echo str1 is not empty
else
  echo str1 is empty
fi
  • 或运算和与运算

#或运算符的使用(前半部分为真时执行后半部分)
mailfolder=/var/spool/mail/james
[ -r "$mailfolder" ]||{ echo "Can not read $mailfolder" ; exit 1 ; }
echo "$mailfolder has mail from:"
grep "^From " $mailfolder

#与运算符(前半部分为假时执行后半部分)
[ -f "/etc/shadow" ] && echo "This computer uses shadow passwors"
  • case 的用法

#!/bin/bash
 
if [ -z $1 ];then
  rental="*** Unknown vehicle ***"
elif [ -n $1 ];then
  rental=$1
fi

case $rental in
  "car") speed=100;;
  "van") speed=50;;
  "jeep") speed=70;;
  "bicycle") speed=10;;
  *) speed="unknow";; 
esac

echo "$1 speed is $speed"

注意:上例中的$1是执行命令是传递的第一个参数.例如: ./bashname.sh car 则$1为"car"

你可能感兴趣的:(bash编程笔记)