- 使用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 #打印奇数1357
- for i in `seq 1 3` 'a' 'x' ;do echo $i; done #循环,包括1,2,3,X,Y123ax
- 算式的结果,例如计算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=(Q WE)echo sum=${#a[*]}for i in ${a[*]};doecho $i;doneecho first:${a[0]}echo second:${a[1]} ./forarr.sh sum=3QWEfirst:Qsecond: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问题的解决方法
给命令执行部分加上双引号即可:
今天偶尔因解决一个小问题,遇到了一奇怪的问题“[ ]”和"[[ ]] "的不一样的效果,总结如下
显示一下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,最后才查到和版本的通用性是有关系的,更简单的说是,"[[ ]]"比"[ ]"具有更好的通用性,所以,为了避免这种问题的发生,直接将"[ ]"替换成"[[ ]]"就可以了。而且”[[ ]]“比“[ ]”比它有更强的容错性,也就是在"[ ]"可能报的错在"[[ ]]结构中可能不报错,比如&&,||等这样的逻辑判断,因不是本篇重点,一带而过了。