shell基础语法总结

文中各个命令可以拿来直接进行测试,可直接在在线测试shell命令进行测试。

1. 变量

一般用法
a=1
echo "a="${a} #使用变量时用${}
echo "a="$a #$a在遇到$ab时,会出错,因此第一种较好
除了显式地直接赋值,还可以用语句给变量赋值
ls
b=`ls /box` #直接将命令执行结果赋值给变量
echo "b="${b}
b=$(ls /box) #直接将命令执行结果赋值给变量
echo "b="${b}
定义只读变量
b readonly
b=2 #为只读变量重新赋值,报错
删除变量
unset a
echo "a="${a}

2. 数组

定义数组
array=(1 2 3 4 5) # 数组用括号包围起来
echo "array[2]="${array[2]} 
打印数组
echo "数组所有元素为:"${array[*]}
打印数组长度
echo "数组长度为:"${#array[*]}
设置数组元素值
array[0]=99
echo "数组第一个元素为:"${array[0]}

3. 字符串

字符串定义
str=1 #不加引号,类型为字符串类型
echo "str="${str}
str="1" 
echo "str="${str}#加双引号,类型为字符串类型
str='1'
echo "str="${str}#加单引号,类型为字符串类型。单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;不能嵌套
字符串长度
str1="abcdefg"
echo "str的长度为:"${#str1}
echo "str的第2个字符开始,连续3个字符为:"${str1:1:3}

4. 运算符

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
c=`expr 2 + 2` #注意数字之间的空格
echo "2+2="${c}
c=`expr 2 - 2`
echo "2-2="${c}
c=`expr 2 \* 2` # 乘号(*)前边必须加反斜杠(\)才能实现乘法运算;
echo "2*2="${c}
c=`expr 2 / 2`
echo "2/2="${c}
c=`expr 2 % 2`
echo "2%2="${c}
c=`expr 2 == 2`
echo "2==2?"${c}
c=`expr 2 != 2`
echo "2!=2?"${c}
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

$a -eq $b #判断等于
$a -ne $b #判断不等
$a -lt $b #判断小于
$a -gt $b #判断大于
$a -eq $b #判断等于
$a -le $b #判断小于等于
$a -ge $b #判断大于等于

布尔运算符
if [ !false ] #无空格
then
echo "true"
else
echo "false"
fi
b1=1
b2=3
if [ ${b1} -gt 0 -o ${b2} -gt 0 ] # -o表示 或
then 
  echo "b1>0或b2>0"
else
  echo "false"
fi
if [ ${b1} -gt 0 -a ${b2} -gt 0 ]
then 
   echo "b1>0且b2>0"
else
   echo "false"
fi
&&
if [[ ${b1} -gt 0 && ${b2} -gt 0 ]] #注意空格
then
  echo "b1>0 && b2>0"
else
  echo "false"
fi
||
if [[ ${b1} -gt 0 || ${b2} -gt 0 ]] #注意空格
then
  echo "b1>0 || b2>0"
else
  echo "false"
fi
字符串判断
#判等
if [ ${b1} = ${b2} ] # 注意这里是一个=
then 
   echo "b1==b2"
else
   echo "false"
fi

#判断不等
if [ $[b1] != ${b2} ]
then
   echo "b1 != b2"
else
   echo "false"
fi
检测字符串是否不为空,
if [ ${b1} ]
then
   echo "b1不为空"
else
   echo"b1为空"
fi
文件测试运算符
#判断是目录
file=./run
if [ -d ${file} ]
then 
   echo "false"
else
   echo "不是目录"
fi

#判断是文件
file=./run
if [ -f ${file} ]
then
  echo "是文件"
else
  echo "false"
fi
判断文件是否存在
if [ -e ${file} ]
then
   echo "文件存在"
else
   echo "false"
fi

5. 函数

function test(){
  a=$1
  b=$2
  echo "第一个参数为:"${a}
  echo "第二个参数为:"${b}
  c=`expr ${a} + ${b}`
  return ${c}
}
test 1 2 # 测试函数
echo "调用函数的结果为:" $? #注意:调用时用$?

6. 打印

echo "fdafd"
echo "我的名字叫\"张三\"" # \"显示转义字符
echo `ls` #显示命令执行结果
echo "123" > test # 将123写入文件test中,不追加
echo "456" >> test # 将456写入文件test中,追加
echo `cat test`
ls

7. 选择

一般的if
a=24
if [ `expr a == 2` ]
then
  echo "a==2"
else
  echo "false"
fi
if嵌套
if [ ${a} -gt 0 ]  #这里只做测试,忽略逻辑
then
   echo "${a}>0"
   if [ ${a} -gt 6 ]
   then
      echo "${a} > 6"
   else
      echo "${a} <= 6"
   fi
elif [ ${a} -gt 5 ]
then   
   echo "${a}>5"
elif [ ${a} -gt 10 ]
then   
   echo "${a}>10"
else
   echo "false2"
fi

8. 循环

arr=(1 2 3 4 5)
for i in ${arr[*]} # 注意这里的写法是arr[*]
do
   echo "当前元素为:"${i}     
done

int=1
while(( $int<=5 ))
do
    echo $int
    let "int++" #Bash let 命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量
done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值