在该行的最前面加一个警号#
bash 1.sh 或者 chmod +x 1.sh; ./1.sh
放到 /usr/local/sbin/下
bash -x 1.sh
date -d "5 days ago" +%Y-%m-%d 或者 date -d "-5 day" +%F
#! /bin/bash a = 1 b = 2 echo $a, $b
赋值变量值的时候,带了空格
a=1; b=2 c=$[$a+$b] echo $c
read -p 例如 read -p "Please input a number" n 这样会把用户输入的内容作为n这个变量的值
大于 -gt 小于是 -lt 等于是 -ne 大于等于是 -ge 小于等于是 -le 格式如下: if [ $a -ge 0 ]; then ... ;fi
&& 并且 || 或者
case $a in 1) command ;; 2) command ;; *) command ;; esac
for a in ... ; do ... ; done while ...; do ...; done
函数可以理解成shell脚本中一个小代码单元,当要用到这段代码时直接调用函数名即可,从而避免重复书写这段代码,提高代码书写效率和质量。
函数的结构为
function fu_name() { ..... }
#! /bin/bash for f in `find . -type f`; do mv $f $f.bak; done
或
#! /bin/bash for i in `ls`; do if [ -f $i ]; then mv $i $i.bak fi done
for f in `find . -type f -size +100K`; do mv $f /tmp/ ; done
标准答案版:
#!/bin/bash hostname=`hostname` echo "hostname : " $hostname ip=`/sbin/ifconfig -a | grep ‘inet addr‘ | awk -F ‘:‘ ‘{print $2}‘ | awk ‘{print $1}‘` for i in $ip do echo "`ifconfig | grep -B1 "$i" | grep -v ‘inet addr‘ | awk ‘{print $1}‘` "$i"" done DNS=`cat /etc/resolv.conf |grep nameserver|grep -v ‘#‘` echo $DNS
个人版本:
#! /bin/bash hostname=`echo $HOSTNAME` IP=`ifconfig eth0 |sed -n ‘2‘p |awk ‘{print $2}‘|awk -F‘:‘ ‘{print $2}‘` dns=`cat /etc/resolv.conf |grep ‘nameserver‘ |awk ‘{print $2}‘ |sed -n ‘1‘p` echo "hostname=$hostname" echo "IP=$IP" echo "dns=$dns"
shell脚本:
#! /bin/bash echo "===Test ‘break‘===" for i in `seq 1 5`; do if [ $i -eq 3 ]; then break else echo $i fi done echo "===Test ‘continue‘===" for i in `seq 1 5`; do if [ $i -eq 3 ]; then continue else echo $i fi done
执行结果:
===Test ‘break‘=== 1 2 ===Test ‘continue‘=== 1 2 4 5
本文出自 “香飘叶子” 博客,请务必保留此出处http://xpleaf.blog.51cto.com/9315560/1894348
《跟阿铭学Linux》第12章 shell脚本中的变量:课后习题与答案
原文:http://xpleaf.blog.51cto.com/9315560/1894348