linux shelll

给变量赋值例子

#!/bin/bash
#shell test

a=12
b=abc
c=12.3
d='abc efg'     #单引号
f=abc efg        #赋值错误

说明:每个shell 脚本第一行都是以 #! 开头,加上执行此shell程序 的shell 解释器的完整路径

# 是shell 代码的注释符号



算术运算赋值例子

#!/bin/bash
#shell test

a=[1+2]         #1+2
let b=1+2       #3
c=`expr 1 + 2`  #3
e=$[1+2]        #3
echo $a
echo $b
echo $c
echo $[1+2]        

说明:shell 中变量赋值不需要事先声明变量


查看环境变量:export

环境变量可直接使用如 echo $SSH_ASKPASS


位置变量:执行shell 脚本时传入的参数,分别有 1~9个,可以这么用:echo $1 


输出

echo $str                  #结果将输出到终端

echo $str>file          #结果输出到文件file,没有会新建,有会覆盖

echo $str>>file        #结果输出会追加到文件file 尾部。

注意:

1)如果在一个脚本中多个> 输出到文件,那么后面的将会覆盖掉前面的

比如

echo 'a'<file

echo 'b'<file

echo 'c'<file

最后file 文件中只会保存‘c'字符!

2)使用 \t 和 \n  和  \c,需要添加 -e

echo -e "hello  \n  $str"


几个特殊的符号

单引号’ ,位于单引号中的特殊字符会失去其特殊意义,解释器会视他为普通字符串。如 echo 'hello  $str'  会直接输出 hello  $str

双引号“,位于双引号内的特殊字符会保持其特殊意义。如 echo "hello $str"  会输出 hello 加上 str 的值(当然前提是str 是一个变量);位于双引号内到单引号会被当作普通字符

转义字符\,转义字符即斜杠,会使特殊字符失去特殊意义。如 echo ”hello \$str“  会输出  hello  $str

反引号:(即tab 键上面那个 ` )用于执行系统命令

执行:echo `date`

会输出:2014年 03月 02日 星期日 18:00:30 CST
执行:a=`ls`

a 的值为ls 指令执行到结果

输入

1)

执行:read a           #输入:abc

a 的值为:abc

2)

执行:read a           #输入:abc   fgh ijk

a 的值为:abc   fgh  ijk

3)

执行:read a b c     #输入:abc   fgh  ijk

# a、b、c 的值分别为  abc 、  fgh  、 ijk

4)

执行:read a b        #输入:abc   fgh   ijk

#a、b 的值分别为:abc  、 fgh  ijk 说明多输入的值会连同空格赋给最后一个变量


测试语句test语句,测试成功返回 0,失败返回 1

1)文件状态测试

-w:测试文件是否可写-r:测试文件是否可读-x:测试文件是否可执行
-L(大写!):测试文件是否为链接文件-d:测试文件是否为目录文件-f:测试文件是否为正规文件
-s:测试文件是否非空(空则返回 0)-u:测试文件是否有 suid 位设置 

执行:test -s file.txt    #file.txt 文件为空

            echo $?           #  $? 用来保存上一条命令到返回值,可以直接用,没关系的,真的

会输出:0

执行:test -w file.txt    #假设 file.txt 文件不可写

            echo $?       

会输出:1

2)数值测试

-eq:两个数是否相等-ne:两个数是否不相等
-le:相当与小于等于号-ge:相当与大于等于号
-gt:相当与大于号-lt:相当与小于号

如:

test 10 -lt 12        #返回值为0

test 可用方括号代替:

cp ./txb/file ./
if [ $? -eq 0 ]  ;then  #方括号左右都有空格!
    echo "copy finished"
else echo "copy errored"
fi

3)字符串测试
=测试两个字符串是否相等
!=:测试两个字符串是否不等
-z:测试单个字符串是否为空
-n:测试单个字符串是否非空

具体代码不再演罗嗦

4)逻辑测试

-a:逻辑与,你懂的(and)
-o:逻辑或
!:逻辑否
如:

if [ -w a.txt -a -x a.txt ]

循环语句:for、while、until

1)for 循环:遍历列表到循环

for ch in a s e d u      # in 是关键词
do
     echo $ch            # 会逐个打印 a s e d u
done
2)while 循环:条件为真则循环执行 do - done循环体

while[ $a -ne 0 ]

do

    echo"$1"

    shift

done

2)until 循环:于while 循环刚好相反,条件为假则执行循环体,其他与 while 循环一样


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值