提示无权限 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 添加可执行权限并执行:

3万+

被折叠的 条评论
为什么被折叠?



