博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
杂点-shell
阅读量:7125 次
发布时间:2019-06-28

本文共 1920 字,大约阅读时间需要 6 分钟。

  • 使用while循环读取文件
    cat file.txt |while read line  do  	echo $line  done  或者:  while read line  do  	echo $line  done < file.txt
  • echo -n 1;echo -n 2
  • echo -n 1;echo ;echo -n 2    #   echo加在 echo -n  中间   可以换行
  • 1
  •  
  • seq 1 2 7  #打印奇数
    1
    3
    5
    7
  • for i in `seq 1 3` 'a' 'x' ;do echo $i; done     #循环,包括1,2,3,X,Y
    1
    2
    3
    a
    x
  1. 算式的结果,例如计算4+3 就用 $[4+3]   # 加减乘除都行

 a=123/123 

 echo ${#a}  #  ${#var} 得到var的字节数

7

bash 的组数(array)处理方法。 

一般而言,

A="a b c def"

 这样的变量只是将

 $A 替换为一个单一的字符串,

 

但是改为

 

 A=(a b c def) ,则是将

 $A 定义为组数...

 

 

bash

 的组数替换方法可参考如下方法:

 

 

${A[@]} 或       ${A[*]} 可得到             # for i in ${A[*]}

 a b c def (全部组数) 

${A[0]}

 可得到

 a (第一个组数),${A[1]}

 则为第二个组数... 

${#A[@]} 或    ${#A[*]} 可得到    4 (全部组数数量) 

${#A[0]}

 可得到

 1 (即第一个组数(a)的长度),${#A[3]}

 可得到

 3 (第四个组数(def)的长度)

 A[3]=xyz

 则是将第四个组数重新定义为

 xyz ...

 

#!/bin/bash

a=(
W
E
)
echo sum=${#a[*]}
for i in ${a[*]};do
echo $i;
done
echo first:${a[0]}
echo second:${a[1]}
 ./forarr.sh   
sum=3
Q
W
E
first:Q
second:W

编辑一个文件   死机 重新打开一个ssh窗口编辑这个文件 可能提示同时编辑的问题

 提示E325: ATTENTION错误    文件只读无法编辑

 提示   .file.swp      当前文件夹下找到这个文件删除        rm -rf .file.swp 即可解决

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

echo -n "a   ";echo -n b ;echo " "; echo -n c    #echo -n  不换行输出     echo “ ”  实现换行输出(echo -n 时  echo " " 空行就是换行)

a   b
c

 

 

列出脚本所在文件夹位置

#!/bin/bash

base_dir=$(cd "$(dirname "$0")";pwd)
echo $base_dir

 

linux bash中too many arguments问题的解决方法

给命令执行部分加上双引号即可:

 

代码如下:
if test -z "`cat filename `"     
[ "`ifconfig |awk '{print $5}'|grep c8`" = "c8:60:00:79:a1:d3" ] && echo ok || echo error
[[ `ifconfig |awk '{print $5}'|grep c8 ` = "c8:60:00:79:a1:d3" ]] && echo ok || echo error

今天偶尔因解决一个小问题,遇到了一奇怪的问题“[ ]”和"[[  ]] "的不一样的效果,总结如下

显示一下code:     if [ -z ` lsof -i:22 ` ]    //这种写法会报too many arguments,改成[[ -z ` lsof -i:22 ` ]]

                            then
                                 echo "the port is not running"
                             else
                                 echo "the port is running"
                             fi

运行这个简单shell脚本时,总是报too many arguments,最后才查到和版本的通用性是有关系的,更简单的说是,"[[  ]]"比"[ ]"具有更好的通用性,所以,为了避免这种问题的发生,直接将"[  ]"替换成"[[  ]]"就可以了。而且”[[ ]]“比“[ ]”比它有更强的容错性,也就是在"[ ]"可能报的错在"[[ ]]结构中可能不报错,比如&&,||等这样的逻辑判断,因不是本篇重点,一带而过了。

转载于:https://www.cnblogs.com/hanxing/p/4078602.html

你可能感兴趣的文章
深入理解java虚拟机
查看>>
SpringMyBatis解析3-MapperFactoryBean
查看>>
sudami和achillis对初学者的建议
查看>>
Thinkphp3.2.3接入QQ登录OAuth2.0案例教程
查看>>
配置Config.web
查看>>
SQL Server 2005 系统数据介绍:dm_exec_connections
查看>>
2017首席信息官峰会广州站在7月即将召开
查看>>
SUSE 网关设置
查看>>
MySQL学习笔记-数据类型与操作数据表
查看>>
电脑启动流程
查看>>
第十一单元 管理网络
查看>>
还有设了enable secret ,enable password 就无效了
查看>>
memcache + openresty
查看>>
vmware克隆Centos6.4虚拟机网卡无法启动问题
查看>>
Mysql各种存储引擎的特性以及如何选择存储引擎
查看>>
MIT发起人工智能项目MIT IQ,旨在赢回AI领域主动权
查看>>
Guava缓存
查看>>
LAMP和LNMP加速与缓存优化
查看>>
sass安装
查看>>
flv技术专题探讨1
查看>>