温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

shell语法是什么

发布时间:2021-10-20 17:53:33 来源:亿速云 阅读:149 作者:柒染 栏目:大数据

今天就跟大家聊聊有关shell语法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

变量

rz="hufei"   # 定义静态变量
date=`date`  # 赋值,动态变量

echo $rz   # hufei
echo '$rz' # '$rz'   不能用
echo "$rz"  # hufei
echo "'$rz'"  # 'hufei'
echo '"$rz"'  #'$rz'  不能用
echo `$rz`  # 报错

echo $date
echo ${rz}addword  # 变量拼接
总结: 字符串带上双引号,变量引用不要用单引号

传参

#!/bin/bash  # 生产中不一定是这一行
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";

echo "个数:$#" # 参数个数
echo "传递参数作为一个字符:$*" #将所有参数拼为一个字符串
echo "PID: $$" # shell进程pid,防止误kill

./test.sh 1 2 3

调试

  • 执行时加上 -x 或者 #!/bin/bash -x

数组

arr=(hello world jike make you)
echo ${arr} # 默认第一个
echo ${arr[*]} # 所有的,按空格分开
echo ${arr[4]} # 第四个
echo ${#arr[*]} # 数组个数

判断

  • 方式1

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi
  • 方式2(命令形式)

if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi

if案例

a="abc"
b="abc"
c=3

# string
if [ $a == $b ]
then
	echo "a equal b"
else
	echo "a no equal b"
fi

# num
if [ $c == $b ];then echo "c equal b";else echo "c not equal b";fi

# 判断文件是否存在
dir="/data/"
file="/data/file"
if [ ! -d $dir ];then echo "${dir}不存在";else echo "${dir}已存在";fi
if [ ! -f $file ];then echo "${file}不存在";else echo "${file}已存在";fi

参数说明:
-d  判断对象是否存在,并且为目录
-f  判断对象是否存在,并且为常规文件
-s  判断对象是否存在,并且长度不为0
-nt 判断file1是否比file2新  [ "/data/file1" -nt "/data/file2" ]

for循环

  • 方式1

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done
for str in 'This is a string'
do
    echo $str
done
  • 方式2

for var in item1 item2 ... itemN; do command1; command2… done;

for循环获取分割字符串,以,为例

s="hello,world,hadoop,jike,ou"

# 方法1
OLD_IFS="$IFS"
IFS=","
arr=($s)
IFS="$OLD_IFS"

for x in ${arr[*]}
do
	echo $x
done


# 方法2
arr2=(${s//,/ })
for x in ${arr2[*]}
do
	echo $x
done

while循环

while condition
do
    command
done
#!/bin/bash
int=1
while(( $int<=5 ))
do
    echo $int
    let "int++"
done

case

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
    1)  echo '你选择了 1'
    ;;
    2)  echo '你选择了 2'
    ;;
    3)  echo '你选择了 3'
    ;;
    4)  echo '你选择了 4'
    ;;
    *)  echo '你没有输入 1 到 4 之间的数字'
    ;;
esac

函数

  • 示例1(无返回值)

#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com

demoFun(){
    echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"
  • 示例2(有返回值)

#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com

funWithReturn(){
    echo "这个函数会对输入的两个数字进行相加运算..."
    echo "输入第一个数字: "
    read aNum
    echo "输入第二个数字: "
    read anotherNum
    echo "两个数字分别为 $aNum 和 $anotherNum !"
    return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"
  • 示例3(接收参数)

#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com

funWithParam(){
    echo "第一个参数为 $1 !"
    echo "第二个参数为 $2 !"
    echo "第十个参数为 $10 !"
    echo "第十个参数为 ${10} !"
    echo "第十一个参数为 ${11} !"
    echo "参数总数有 $# 个!"
    echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

包含文件

  • 包含文件可以用于封装公共文件

. filename   # 注意点号(.)和文件名中间有一空格
或
source filename
#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com

#使用 . 号来引用test1.sh 文件
. ./test1.sh

# 或者使用以下包含文件代码
# source ./test1.sh

echo "菜鸟教程官网地址:$url"

看完上述内容,你们对shell语法是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI