Shell基础


>all_result 2>& 1 重定向标准错误到标准输出
>& all_result 
2>/dev/null 忽略标准错误


变量名不能含有 "-" 等保留字符,也不能含有空格
变量赋值时,'='左右两边都不能有空格
local HELLO=World  局部变量


浮点运算
echo "scale=3; 1.55 * 1.55 " | bc


浮点比较
if [ `echo "$a > $b" | bc` -eq 1 ] 转换为整数1比较


整数运算
let "x = $x + 1" 或者 x=`expr $x + 1`
乘法 expr 30 /* 3 


算术运算符 
+ - * / % 表示加减乘除和取余运算
+= -= *= /= 同 C 语言中的含义


位操作符
<< <<= >> >>= 表示位左右移一位操作
& &= | |= 表示按位与、位或操作
~ ! 表示非操作
^ ^= 表示异或操作


关系运算符 
< > <= >= == != 表示大于、小于、大于等于、小于等于、等于、不等于操作
&& || 逻辑与、逻辑或操作
 


对应的操作    整数操作      字符串操作  //可互用的
相同          -eq            =
不同          -ne           !=
大于          -gt            >
小于          -lt            <
大于或等于    -ge
小于或等于    -le
为空                    -z
不为空                    ! -z


运算符        含义( 满足下面要求时返回 TRUE )
-e file       文件 file 已经存在
-f file       文件 file 是普通文件
-s file       文件 file 大小不为零
-d file       文件 file 是一个目录
-r file       文件 file 对当前用户可以读取
-w file       文件 file 对当前用户可以写入
-x file       文件 file 对当前用户可以执行
-g file       文件 file 的 GID 标志被设置
-u file       文件 file 的 UID 标志被设置
-O file       文件 file 是属于当前用户的
-G file       文件 file 的组 ID 和当前用户相同
file1 -nt file2    文件 file1 比 file2 更新
file1 -ot file2    文件 file1 比 file2 更老



控制语句


if [ expression ]
then
statments
elif [ expression ]
then
statments
else
statments
fi



for var in  如果没有in,则遍历命令行所有参数
do
statments
done


for x in {1..10..2}等差数列 1 3 5 7 9 




while [ condition ]   //while : 无限循环
do
statments
done




until [ condition is TRUE ]
do
statments
done








case "$var" in
condition1 )
statments1;;
condition2 )
statments2;;
...
* )
default statments;;
esac




break 语句可以让程序流程从当前循环体中完全跳出,而 continue 语句可以跳过当次循环的剩余部分并直接进入下一次循环。


my_funcname() { 
code block
return XXX
}

 

 

 

 

 

 


保留变量
$IFS  这个变量中保存了用于分割输入参数的分割字符,默认识空格。 
$HOME  这个变量中存储了当前用户的根目录路径。 
$PATH  这个变量中存储了当前 Shell 的默认路径字符串。 
$PS1  表示第一个系统提示符。 
$PS2  表示的二个系统提示符。 
$PWD  表示当前工作路径。 
$EDITOR 表示系统的默认编辑器名称。 
$BASH  表示当前 Shell 的路径字符串。
$0, $1, $2, ... 
表示系统传给脚本程序或脚本程序传给函数的第0个、第一个、第二个等参数。
$#   表示脚本程序的命令参数个数或函数的参数个数。
$$   表示该脚本程序的进程号,常用于生成文件名唯一的临时文件。 
$?   表示脚本程序或函数的返回状态值,正常为 0,否则为非零的错误号。
$*   表示所有的脚本参数或函数参数。
$@   和 $* 涵义相似,但是比 $* 更安全。
$!   表示最近一个在后台运行的进程的进程号。






$RANDOM   每次执行的时候随机的打印出一个大小在 1 到 65536 之间的整数




${var-default} 表示如果变量 $var 还没有设置,则保持 $var 没有设置的状态,并返回后面的默认值 default。
${var=default} 表示如果变量 $var 还没有设置,则取后面的默认值 default。 
${var+otherwise} 表示如果变量 $var 已经设置,则返回 otherwise 的值,否则返回空( null )。
${var?err_msg} 表示如果变量 $var 已经设置,则返回该变量的值,否则将后面的 err_msg 输出到标准错误输出上。
${var#pattern}, ${var##pattern} 用于从变量 $var 中剥去最短(最长)的和 pattern 相匹配的最左侧的串。
${var%pattern}, ${var%%pattern} 用于从变量 $var 中剥去最短(最长)的和 pattern 相匹配的最右侧的串。
${var:pos} 表示去掉变量 $var 中前 pos 个字符。
${var:pos:len} 表示变量 $var 中去掉前 pos 个字符后的剩余字符串的前 len 个字符。
${var/pattern/replacement} 表示将变量 $var 中第一个出现的 pattern 模式替换为 replacement 字符串。
${var//pattern/replacement} 表示将变量 $var 中出现的所有 pattern 模式全部都替换为 replacment 字符串




交互选择的菜单
select var in  
do
statments use $var
done



读取用户输入
read
here documents,将用户需要通过键盘输入的字符串改为从程序体中直接读入





if [ $# -lt 3 ] ; then
cat <<HELP
ren -- renames a number of files using sed regular expressions


USAGE: 


EXAMPLE: 


HELP
 exit 0
fi



$$ 本脚本pid
$! 上一个命令pid

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值