[ shell ] — 注释、运算符、echo、printf、test——2

一、Shell注释
1.1.单行注释 #开头的行,就会被注释

#--------------------------------------------
# 这是一个注释
# author:wolves_liu
# site:www.wolves_liu.com
# slogan:学的不仅是技术,更是梦想!
#--------------------------------------------
##### 用户配置区 开始 #####
#
#
# 这里可以添加脚本描述信息
# 
#
##### 用户配置区 结束  #####

1.2. 多行注释

:<<EOF			# end-of-file

这里面都是注释的内容

EOF

或

:<<!
这里面都是注释的内容
!

二、Shell传递参数
2.1. $0 表示文件名,$1 表示执行脚本的第一个参数,…

echo "The file name is $0!"
echo "The 1th parameter is $1!"
echo "The 2th parameter is $2!"
echo "The 3th parameter is $3!"

执行:

. parameter.sh 1 2 3		//传了三个参数 1 2 3

打印信息为:

The file name is parameter.sh!
The 1th parameter is 1!
The 2th parameter is 2!
The 3th parameter is 3!

2.2.其他用法
参数个数为:$#
echo "将所有参数以字符串显示:$* #打印 将所有参数以字符串显示:1 2 3
echo "将所有参数以字符串显示:\"$*\" #打印 将所有参数以字符串显示:“1 2 3”

2.3 $*$@,不加引号时的用法一样。加引号时,“$*”是传一个参数1 2 3; “$@”是传三个参数1 2 3
eg:

for i in "$*"; do
	echo $i	
done
打印:1 2 3

for i in "$@"; do
	echo $i
done
打印:
1
2
3

三、shell基本运算符
3.1.基本运算符

val=`expr 2 + 2`
echo $val
# 1)运算符左右要有空格,eg:2+2 错误。要写成2 + 2.
# 2)表达式用反引号` 而不是单引号' 注意区分。

3.2.+ - * /

a1=`expr $a + $b`
a2=`expr $a - $b`
a3=`expr $a \* $b`
a4=`expr $a / $b`
echo $a1 $a2 $a3 $a4 

3.3. 条件语句的用法 == !=

if [ $a == $b ] 
then
    echo "a等于b"
fi
或者
if [ $a == $b ]; then
    echo "a等于b"
fi

3.4.文件测试运算符
-f file :是否为普通文件,如果是,则返回 true。
-r file:检测文件是否可读,如果是,则返回 true。

file="/net/peknetapp04/jsliu/shell/val.sh"
if [ -f $file ]
then
    echo "val.sh is ragular file!"
else
    echo "val.sh isn't ragular file!"
fi

四、echo用法
4.1. -e 显示转义字符

echo -e "i love you \n"

4.2. -n 不换行

echo -n "i love you"

4.3. > 打印到指定文件显示

echo you love me > 1

4.4. 单引号,原样输出字符串,不进行转义或取变量

echo '$a'

4.5.显示命令执行结果

echo `date`		# Mon Oct 28 17:06:08 CST 2019

五、printf用法
1.用法与c语言的标准函数printf()一样

printf "hello world %d!\n" 33333			# 打印: hello world 33333!
printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg		# 姓名     性别   体重kg

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

2.printf 中单引号与双引号一样

printf 'xinxin %d %s!\n' 666 abc	# xinxin 666 abc!

3.格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用

printf 'xinxin %s!\n' abc def	

打印如下:
xinxin abc!
xinxin def!

五、test命令:用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
5.1. []里面执行基本的算数运算

echo $[1+2]		# 3

5.2.数值测试

num1=100
num2=100
if test $[num1] -eq $[num2]
then
    echo "num1 等于 num2"
else
    echo "num1 不等于 num2"
fi

5.3.字符串测试
=!=-z字符串的长度为零则为真 -n字符串的长度不为零则为真

str1=abc
str2=bcd

if test $str1 = $str2
then
    echo "两字符串相等" 
else
    echo "两字符串不相等" 
fi

5.4.文件测试
-e file:文件是否存在

cd /net/peknetapp04/jsliu/shell
if test -e ./val.sh
then
    echo '文件已存在!'
else
    echo '文件不存在!'
fi
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章