shell脚本

提示无权限 chmod +x filename

不需执行权限:

source filename

sh filename

bash filename

要执行权限

./filename

读取键盘输入

read 变量名

#!/bin/bash
echo "please enter username and password>"
echo "enter your username:"
read username      #声明并初始化变量
echo "enter your password"
read password

echo "username is ":$username
echo "password is ":$password
                                
#! /bin/bash
# 读取多个输入
echo "Enter some values>"
read value1 value2 value3 
echo "value1 : $value1"
echo "value2 : $value2"
echo "value3 : $value3"
输入:a b c d e f
输出:
    value1 : a
    value2 : b
    value3 : c d e f    // 输入的多余参数会被最后一个读取变量全部接收。
#! /bin/bash
# $REPLY 读取所有输入
echo "Enter some values>"
read 
echo "\$REPLY : $REPLY"
输入:a b c d e f
输出:$REPLY : a b c d e f

shell的for循环

a=10
b=20
if [ $a == $b ]
then
   echo "a 等于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo "没有符合的条件"
fi

 

变量定义不需要$,引用需要$

获取数组长度的方法与获取字符串长度的方法相同

=号两边不能有空格

echo 与 "之间有空格

[ 与 $ 之间有空格

#!/bin/bash
arr1=(a b c d)
arr2[0]=A
arr2[1]=B
arr2[2]="hello"
echo "数组元素为:${arr1[*]}"
echo "数组长度为:${#arr2[*]}"
read -p "请输入一段文字:" -n 6 -t 5 -s password
echo -e "\npassword is $password"

参数说明:

  •  -p 输入提示文字
  •  -n 输入字符长度限制(达到6位,自动结束)
  •  -t 输入限时
  •  -s 隐藏输入内容

判断文件夹是否存在

if [ -d "/data/" ];then
  echo "文件夹存在"
  else
  echo "文件夹不存在"
fi
-e 判断对象是否存在
-d 判断对象是否存在,并且为目录
-f 判断对象是否存在,并且为常规文件
-L 判断对象是否存在,并且为符号链接
-h 判断对象是否存在,并且为软链接
-s 判断对象是否存在,并且长度不为0
-r 判断对象是否存在,并且可读
-w 判断对象是否存在,并且可写
-x 判断对象是否存在,并且可执行
-O 判断对象是否存在,并且属于当前用户
-G 判断对象是否存在,并且属于当前用户组
-nt 判断file1是否比file2新  [ "/data/file1" -nt "/data/file2" ]
-ot 判断file1是否比file2旧  [ "/data/file1" -ot "/data/file2" ]

 

$#	传递到脚本或函数的参数个数
$*	以一个单字符串显示所有向脚本传递的参数
$$	脚本运行的当前进程ID号
$!	后台运行的最后一个进程的ID号
$@	与$*相同,但是使用时加引号,并在引号中返回每个参数。
$-	显示Shell使用的当前选项,与set命令功能相同。
$?	显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
#!/bin/bash

echo "Hello World !" | grep -e Hello
echo $?
echo "Hello World !" | grep -e Bye
echo $?
if echo "Hello World !" | grep -e Hello
then
    echo true
else
    echo false
fi

if echo "Hello World !" | grep -e Bye
then
    echo true
else
    echo false
fi

function demoFun1(){
    return 0
}

function demoFun2(){
    return 12
}

if demoFun1
then
    echo true
else
    echo false
fi

if demoFun2
then
    echo true
else
    echo false
fi
其执行结果如下:

Hello World !
0
1
Hello World !
true
false
true
false
grep 是从给定字符串中寻找匹配内容的命令。首先看出如果找到了匹配的内容,会打印匹配部分且得到的返回值 $? 为 0,如果找不到,则返回值 $? 为 1。

接下来分别将这两次执行的 grep 命令当作条件语句交给 if 判断,得出返回值 $? 为 0,即执行成功时,条件语句为 true,当返回值 $? 为 1,即执行失败时,条件语句为 false。

之后再用函数的 return 值作为测试,其中 demoFun1 返回值为 0,demoFun2 返回值选择了任意一个和 0 不同的整数,这里为 12。

将函数作为条件语句交给 if 判断,得出返回值为 0 时,依然为 true,而返回值只要不是 0,条件语句都判断为 false。

Shell 文件包含

和其他语言一样,Shell 也可以包含外部脚本。

创建两个 shell 脚本文件。

test1.sh 代码如下:

#!/bin/bash

url="http://www.runoob.com"
test2.sh 代码如下:

#!/bin/bash

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

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

echo "地址:$url"
接下来,我们为 test2.sh 添加可执行权限并执行:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值