Shell语法基础

目录

  • if语句

  • test命令

  • 字符串比较

  • 文件比较

  • 复合条件

  • switch语句

  • 其他语句

  • 循环语句

  • 特殊变量

  • 重定向

  • 函数

1.if语句


#############################
if  command
then
    commands
fi
#############################
if    command
then
      commands
else
      commands
fi
#############################
if command1
then
   commands
elif command2
then
   commands
fi
############################


2.test命令

n1 -eq n2 n1与n2是否相等
n1 -ge n2 n1是否大于等于n2
n1 -gt n2 n1是否大于n2
n1 -lt n2 n1是否小于n2
n1 -le n2 n1是否小于等于n2
n1 -ne n2 n1是否不等于n2


3.字符串比较

str1=str2 str1是否与str2相等
str1!=str2 str1是否和str2不同
str1<str2 str1是否小于str2   if【 $val1 \< $val2 】
str1>str2 str1是否大于str2   if【 $val1 \> $val2 】
-n str1 str1长度是否非0
-z str1 str1长度是否为0


4.文件比较

-d file 是否存在,并是一个目录
-e file 是否存在
-f file 是否存在,并是一个文件
-r file 是否存在并可读
-s file 是否存在并非空
-w file 是否存在并可写
-x file 是否存在并可执行
-O file 是否存在并属于当前用户所有
-G file 是否存在并且默认组与当前用户组相同
file1 -nt file2 检查file1是否比file2新
file1 -ot file2 检查file1是否比file2旧


5.复合条件

[ condition1 ] && [ condition2 ]
[ condition1 ] || [ condition2 ]


6.switch语句

case variable in
pattern1 | pattern2) command1;;
pattern3) command2;;
*) default commands;;
esac


7.其他语句

 数学运算: ((expr))

 正则       [[ expr ]]

8.循环语句


for var in list
do
    commands
done
###########################
默认分隔符为空格,更改:
IFS=$'\n'
###########################
for(( i=1; i<=10; i++ ))
do
    echo "$i"
done
###########################
while test command
do
    other commands
done
############################
until test commands
do
    other commands
done
###########################


9.特殊变量

$?   ###上一个命令的返回值
$0   ###命令路径名
$1...$n   ####第几个参数
$#   ###脚本的参数个数 ,最后一个参数 ${!#}
$*   ###将命令行上的所有参数当做单个变量保存
$@   ###将命令行上提供的所有参数当做同一个字符串中的多个独立的单词
$$   ###进程id
$!   ###最近一个后台命令的进程id


10.重定向


cat < test1         标准输入
ls -l > test1       标准输出
ls -l >> test1      追加
ls -l 2>test1       重定向标准错误
ls -l test test2 1>test5 2> test6  重定向标准输出,标准错误
ls -l test &> test1 重定向标准错误和输出到同一个文件
echo "xx" > &2      将标准输出显示在标准错误的位置
exec 1 > test       将脚本中的标准输出重定向到test
     0 < testfile
     2 > test
########################################################
exec 3 > &1         把3重定向到标准输出
exec 1 > test14out  把标准输出重定向到test14out
exec 1 > &3         把标准输出重定向到3
########################################################
exec 6 < &0         把stdin保存到6
exec 0 < test       stdin重定向到test
exec 0 < &6         stdin恢复
########################################################
exec 3 > &-         关闭文件描述符
ls -al > /dev/null  阻止命令输出
#######################################################
mktemp testing.XXXXXX   创建临时文件
mktemp -t test.XXXXXX   在tmp目录创建临时文件
mktemp -d dir.XXXXXX    创建临时目录
########################################################
date |tee testfile      将date输出到标准输出和testfile


11.函数


function func{}
################################
function func{
    echo 5
}
result = `func`      返回值
################################
local temp=5;        局部变量
###########函数传递数组########
function test{
    local newarray
    newarray=(`echo "$@"`)
    echo "${newarray[*]}"
}
myarray=(1 2 3 4 5)
test ${myarray[*]}
################################


你可能感兴趣的:(linux,shell)