代码改变世界

初见shell

2016-07-21 10:17  不知道怎么取名字  阅读(163)  评论(0编辑  收藏  举报

      在写了一段时间的java后,发现要一次性执行多个java很麻烦,因此想到了用shell脚本去调用。但是因为之前没有学过shell,所以一切都是重新开始。在此,简单的记录下意思的基础性知识。

  参数相关的命令:

#!/bin/bash

echo "File Name: $0"
echo "First Parameter : $1"
echo "First Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"
运行结果:
$./test.sh Zara Ali File Name : ./test.sh First Parameter : Zara Second Parameter : Ali Quoted Values: Zara Ali Quoted Values: Zara Ali Total Number of Parameters : 2

参数的含义
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

 

shell 判断文件是否存在:

 1 #!/bin/bash 
 2 
 3 folder="/var/www/"
 4 file="/var/www/log" 
 5 
 6 #如果文件夹不存在,创建文件夹
 7 if [ ! -d "/myfolder" ]; then
 8   mkdir /myfolder
 9 fi
10  
11 # -x 参数判断 $folder 是否存在并且是否具有可执行权限
12 if [ ! -x "$folder"]; then
13   mkdir "$folder"
14 fi
15 
16 # -d 参数判断 $folder 是否存在
17 if [ ! -d "$folder"]; then
18   mkdir "$folder"
19 fi 
20 # -f 参数判断 $file 是否存在
21 if [ ! -f "$file" ]; then
22   touch "$file"
23 fi 
24 # -n 判断一个变量是否有值
25 if [ ! -n "$var" ]; then
26   echo "$var is empty"
27   exit 0
28 fi 
29 # 判断两个变量是否相等
30 if [ "$var1" = "$var2" ]; then
31   echo '$var1 eq $var2'
32 else
33   echo '$var1 not eq $var2'
34 fi