shell

2017-10-14  本文已影响0人  renyangfar

shell变量

name="Micol"

变量名和“=“之间不能有空格

echo $name

或者

echo ${name}
name="Json"
readonly name
unset name

只读变量不能删除

字符串

字符串可以用单引号或者双引号,但是单引号中不能使用变量,也不能使用单引号,总之单引号里面是什么样的输出就是什么样的。
建议使用双引号

your_name="qinjx"
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
str="how are you!!!"
echo ${#str}
str="how are you!!!"
echo ${str:1:7}
string="runoob is a great company"
echo `expr index "$string" is`  # 输出 8

注意: 以上脚本中 "`" 是反引号,而不是单引号 "'",不要看错了哦。

shell数组

shell不支持多维数组

数组名=(值1 值2 ... 值n)

或者

array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen
${数组名[下标]}

例如

valuen=${array_name[n]}
# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}

shell注释

用“#”表示注释符号
不支持多行注释
每一行加个#符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。

shell传递参数

在运行shell命令时,可以同时传入参数。
在程序中,$1,$2,$3表示第一,第二,第三个参数;
$0:表示shell名。
$#:传递到脚本的参数个数
在test.sh中写入:

#!/bin/sh
echo $0
echo $1
echo $2

更改为可执行程序

chmod +x test.sh

运行

./test.sh 1 2 3

基本运算符

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2
如:

#!/bin/bash

val=`expr 2 + 2`
echo "两数之和为 : $val"

注意:相乘时需要在“*”前加“\”,如“2 * 2”

关系运算符 布尔运算符 逻辑运算符 字符串运算符 文件测试运算符

echo

echo "that is good idea"

或者:省略“”“

echo that is good idea
read name
echo "$name is read"
echo -e "OK! \n" # -e 开启转义
echo "It it a test"
#!/bin/sh
echo -e "OK! \c" # -e 开启转义 \c 不换行
echo "It is a test"
echo "It is a test" > myfile
echo '$name\"'

输出结果:

$name\"
echo `date`

注意: 这里使用的是反引号 `, 而不是单引号 '。
结果将显示当前日期

Thu Jul 24 10:08:46 CST 2014

printf()

#!/bin/bash
printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg  
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543 
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876 

输出:

姓名     性别   体重kg
郭靖     男      66.12
杨过     男      48.65
郭芙     女      47.99

%s %c %d %f都是格式替代符
%-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
%-4.2f 指格式化为小数,其中.2指保留2位小数。

上一篇 下一篇

猜你喜欢

热点阅读