0%

shell脚本攻略之小试牛刀

shell攻略第一章之小试牛刀

这次再学shell,主要是学习《linux shell脚本攻略》这本书,他主要是讲了linux的实战,默认读者已经拥有了一定的shell脚本的语法基础能力,希望可以从中领略到脚本的魅力。

重定向脚本内部的文本块
#/bin/bash
  2 cat << EOF > log.txt
  3 log file header 
  4 this is a test file log
  5 EOF

该代码可以将文本添加到log.txt 中,EOF之间的文本被当作整体进行处理

普通数组的定义与获取
# 定义数组
array_var=(1 2 3 34 4);echo ${array_var[1]}

# 打印整个数组
array_var=(1 2 3 34 4);echo ${array_var[*]}

# 打印数组长度,加#获取
array_var=(1 2 3 34 4);echo ${#array_var[*]}
关联数组的使用,关联数组可以使用文本作为key
#!/bin/bash
  2 # 声明一个变量
  3 declare -A frute
  4 
  5 # 定义数组
  6 frute=([apple]='111' [orange]='222')
  7 
  8 # 获取数组中的值
  9 echo "apple price = ${frute[apple]}"
 10 
 11 # 获取数组中的key
 12 echo "${!frute[*]}"
隐藏输入
#!/bin/bash
  2 
  3 echo -e "enter a password"
  4 
  5 stty -echo
  6 read password
  7 stty echo 
  8 echo 
  9 echo password read.password is ${password}
计数,每秒count+1
#!/bin/bash -xv

echo -n count:
# 存储光标位置
tput sc

count=0;
while true;
do 
if [ $count -lt 40 ];
then let count++;
# 睡1秒
sleep 1;
# 恢复光标位置
tput rc
# 清除从当前光标到行尾的所有内容
tput ed
# 输出 count
echo -n $count;
else exit 0;
fi

done
函数的定义
#!/bin/bash

# 定义函数
function fname()
{
    echo  $1,$2
    echo "$@"
    echo "$*"
    return 0

}

# 参数的定义
# $1是第一个参数
# $2是第二个参数
# $n是第n个参数
# "$@" 被扩展成"$1""$2""$3"等
# $? 可以判断命令执行的状态,成功为0

fname aa bb
字段分隔符IFS,IFS是shell中的默认分隔符
1 #!/bin/bash
  2 # 定义字符串
  3 data="apple,orange,my"
      # 记录就的分隔符
  4 oldIFS=$IFS
  5 echo $oldIFS
  6 IFS=,
  7 for item in $data;
  8 do
  9 echo item: $item
 10 done
 11 IFS=$oldIFS
shell中的条件判断 格式[ var -eq 10 ]
#!/bin/bash

# shell中的条件

# -eq 等于
# -gt 大于
# -lt 小于
# -ge 大于或等于
# -le 小于或等于

# [$var -ne 0 -a $var -gt 2] 逻辑与-a

#[ $var -ne 0 -o $var -gt 2 ] 逻辑或 -o

# -f 判断是文件
# -x 判断可执行
# -d 判断是目录
# -e 判断文件存在

# 字符串比较 [[ $a=$b ]]
read的使用,read可以从stdin或者指定的文本中读取
#!/bin/bash

# read 是一个很重要的命令

# 从输入中读取n个字符并存入variable_name
# read -n 2 var
# echo $var

read -p "enter input:" var
echo $var
~~