Bash脚本可以用于各种目的,例如执行shell命令、一起运行多个命令、自定义管理任务、执行任务自动化等。因此,Bash编程基础知识对每个Linux用户都很重要。本文将帮助您了解bash编程的基本思想。这里用非常简单的例子解释了bash脚本的大多数常见操作。
本文介绍了bash编程的以下主题。
- Hello World
- 回声命令
- 评论
- 多行注释
- While循环
- For Loop
- 获取用户输入
- If语句
- And Condition if语句
- 或Condition if语句
- Else if and Else条件
- 案例状况
- 从命令行获取参数
- 从命令行获取带名称的参数
- 将两个字符串组合到一个变量中
- 获取字符串的子字符串
- 在一个变量中添加2个数字
- 创建函数
- 使用函数参数
- 从脚本传递返回值
- 生成目录
- 通过检查是否存在生成目录
- 读取文件
- 删除文件
- 附加到文件
- 测试文件是否存在
- 发送电子邮件示例
- 获取分析当前日期
- 等待命令
- 睡眠命令
创建并执行第一个BASH程序:
您可以从终端或通过执行任何bash文件来运行bash脚本。从终端运行以下命令,执行一个非常简单的bash语句。命令的输出将是“Hello World”。
$echo“Hello World”
打开任意编辑器以创建bash文件。这里,nano编辑器用于创建文件,文件名设置为“First.sh”
$nano-First.sh
将以下bash脚本添加到文件中并保存该文件。
#!/垃圾桶/垃圾桶
echo“Hello World”
您可以通过两种方式运行bash文件。一种方法是使用bash命令,另一种方法则是设置bash文件的执行权限并运行该文件。此处显示了两种方式。
$bash First.sh
或
$chmod a+x First.sh
$ ./第一.sh
转到顶部
回声命令的使用:
您可以将echo命令与各种选项一起使用。以下示例中提到了一些有用的选项。当您在没有任何选项的情况下使用“echo”命令时,默认情况下会添加一行换行符-n'选项用于打印没有换行的任何文本,'-e'选项用于从输出中删除反斜杠字符。创建一个名为“echo_example.sh”的新bash文件,并添加以下脚本。
#!/垃圾桶/垃圾桶
echo“使用换行符打印文本”
echo-n“打印不带换行符的文本”
echo-e“n删除t反斜杠t字符n”
使用bash命令运行该文件。
$bash echo_example.sh
转到顶部
评论的使用:
“#”符号用于在bash脚本中添加单行注释。创建一个名为“comment_example.sh”的新文件,并添加以下带有单行注释的脚本。
#!/垃圾桶/垃圾桶
#加两个数值
((总和=25+35))
#打印结果
echo$sum
使用bash命令运行该文件。
$bash comment_example.sh
转到顶部
多行注释的使用:
您可以通过各种方式在bash中使用多行注释。下面的示例显示了一种简单的方法。创建一个名为“multiline comment.sh”的新bash,并添加以下脚本。这里,“:”和“”符号用于在bash脚本中添加多行注释。以下脚本将计算5的平方。
#!/垃圾桶/垃圾桶
: '
以下脚本计算
数字的平方值,5。
'
((面积=5*5))
echo$区域
使用bash命令运行该文件。
$bash多重电子商务.sh
您可以查看下面的链接来了解更多关于bash注释使用的信息。
转到顶部
使用While循环:
创建一个名为“while_example.sh”的bash文件,了解while循环的用法。在本例中,while循环将迭代5次。计数变量的值将在每一步中递增1。当计数变量的值为5时,while循环将终止。
#!/垃圾桶/垃圾桶
valid=true
计数=1
而[$valid]
做
echo$count
如果[$count-eq 5];
然后
打破
fi
计数
完成
使用bash命令运行该文件。
$bash while_example.sh
您可以查看下面的链接来了解更多关于bash-while循环使用的信息。
转到顶部
使用For循环:
以下示例中显示了基本的for循环声明。创建一个名为“for_example.sh”的文件,并使用for循环添加以下脚本。这里,for循环将迭代10次,并在一行中打印变量counter的所有值。
#!/垃圾桶/垃圾桶
for((计数器=10;计数器>0;计数器--))
做
echo-n“$counter”
完成
printf“n”
使用bash命令运行该文件。
$bash for _example.sh
您可以在bash脚本中将for循环用于不同的目的和方式。您可以查看下面的链接来了解更多关于bash for循环的使用。
转到顶部
获取用户输入:
“read”命令用于接受bash中用户的输入。创建一个名为“user_input.sh”的文件,并添加以下脚本以获取用户的输入。这里,一个字符串值将取自用户,并通过组合其他字符串值来显示该值。
#!/垃圾桶/垃圾桶
echo“输入您的姓名”
读取名称
echo“欢迎$name使用LinuxHint”
使用bash命令运行该文件。
$bash user_input.sh
您可以查看下面的链接来了解有关bash用户输入使用的更多信息。
转到顶部
使用if语句:
可以将if条件与单个或多个条件一起使用。此语句的起始块和结束块由“if”和“fi”定义。使用以下脚本创建一个名为“simple_if.sh”的文件,以了解bash中的use if语句。这里,10被分配给变量n。如果$n的值小于10,则输出为“这是一个一位数”,否则输出为“它是一个两位数”。为了进行比较,此处使用了“-lt”。为了进行比较,您还可以在bash脚本中使用'-eq'表示相等,'-ne'表示不相等,'-gt'表示大于。
#!/垃圾桶/垃圾桶
n=10
如果[$n-lt 10];
然后
echo“这是一个一位数”
其他的
echo“这是一个两位数”
fi
使用bash命令运行该文件。
$bash simple_if.sh
转到顶部
将if语句与AND逻辑一起使用:
在具有两个或多个条件的if语句中可以使用不同类型的逻辑条件。下面的示例显示了如何使用AND逻辑在if语句中定义多个条件。“&&”用于应用if语句的AND逻辑。创建一个名为“if_with_AND.sh”的文件来检查以下代码。这里,用户名和密码变量的值将取自用户,并与“admin”和“secret”进行比较。如果两个值都匹配,那么输出将是“有效用户”,否则输出将为“无效用户”。
#!/垃圾桶/垃圾桶
echo“输入用户名”
读取用户名
echo“输入密码”
读取密码
if[[($username==“admin”&&$password==“secret”)]];然后
echo“有效用户”
其他的
echo“无效用户”
fi
使用bash命令运行该文件。
$bash if_with_AND.sh
转到顶部
将if语句与OR逻辑一起使用:
“||”用于定义if条件中的OR逻辑。使用以下代码创建一个名为“if_with_OR.sh”的文件,以检查if语句的OR逻辑的使用情况。这里,n的值将取自用户。如果该值等于15或45,则输出为“你赢了游戏”,否则输出为“输了游戏”。
#!/垃圾桶/垃圾桶
echo“输入任意数字”
读取n
如果[[($n-eq 15||$n-eq45)]]
然后
echo“你赢了比赛”
其他的
echo“你输掉了比赛”
fi
使用bash命令运行该文件。
$bash if_with_OR.sh
转到顶部
使用else-if语句:
else-if条件在bash中的使用与其他编程语言几乎没有什么不同elif'用于定义bash中的else-if条件。创建一个名为“elseif_example.sh”的文件,并添加以下脚本来检查bash脚本中如何定义elseif。
#!/垃圾桶/垃圾桶
echo“输入您的幸运数字”
读取n
如果[$n-eq 101];
然后
echo“你得了一等奖”
elif[$n-eq 510];
然后
echo“你得了二等奖”
elif[$n-eq 999];
然后
echo“你得了三等奖”
其他的
echo“对不起,下次再试”
fi
使用bash命令运行该文件。
$bash elseif_example.sh
转到顶部
用例说明:
Case语句用作if-elseif-else语句的替代语句。此语句的起始块和结束块由“case”和“esac”定义。创建一个名为“case_example.sh”的新文件,并添加以下脚本。以下脚本的输出将与前面的else-if示例相同。
#!/垃圾桶/垃圾桶
echo“输入您的幸运数字”
读取n
案例$n in
101)
echo-echo“你得了一等奖”;;
510)
echo“你得了二等奖”;;
999)
echo“你得了三等奖”;;
*)
echo“对不起,下次再试”;;
esac
使用bash命令运行该文件。
$bash case_example.sh
转到顶部
从命令行获取参数:
Bash脚本可以像其他编程语言一样从命令行参数中读取输入。例如,$1和$2变量用于读取第一个和第二个命令行参数。创建一个名为“command_line.sh”的文件,并添加以下脚本。以下脚本读取两个参数值,并将参数总数和参数值打印为输出。
#!/垃圾桶/垃圾桶
echo“参数总数:$#”
echo“第一个参数=$1”
echo“第二个参数=$2”
使用bash命令运行该文件。
$bash command_line.sh Linux提示
您可以查看以下链接以了解有关bash命令行参数使用的更多信息。
转到顶部
从命令行获取名称为的参数:
以下脚本显示了如何读取带有名称的命令行参数。创建一个名为“command_line_names.sh”的文件,并添加以下代码。这里,两个参数,X和Y被这个脚本读取,并打印X和Y的总和。
#!/垃圾桶/垃圾桶
用于“$@”中的arg
做
index=$(echo$arg|cut-f1-d=)
val=$(echo$arg|cut-f2-d=)
案例$index在
X) X=$val;;
Y) Y=$val;;
*)
esac
完成
((结果=x+y))
echo“X+Y=$result”
使用bash命令和两个命令行参数运行该文件。
$bash command_line_names X=45 Y=30
转到顶部
组合字符串变量:
您可以在bash中轻松地组合字符串变量。创建一个名为“string_comport.sh”的文件,并添加以下脚本来检查如何通过将变量放在一起或使用“+”运算符在bash中组合字符串变量。
#!/垃圾桶/垃圾桶
string1=“Linux”
string2=“提示”
echo“$string1$string2”
字符串3=$string1+$string2
string3+=“是一个很好的教程博客网站”
echo$string3
使用bash命令运行该文件。
$bash字符串_组合.sh
转到顶部
获取字符串的子字符串:
与其他编程语言一样,bash没有内置函数来从任何字符串数据中剪切值。但是,您可以在bash中以另一种方式执行子字符串任务,如下脚本所示。要测试脚本,请使用以下代码创建一个名为“substraing_example.sh”的文件。这里,值6表示子串将从其开始的起始点,5表示子串的长度。
#!/垃圾桶/垃圾桶
Str=“从LinuxHint学习Linux”
subStr=${Str:6:5}
echo$subStr
使用bash命令运行该文件。
$bash substraing_example.sh
转到顶部
加两个数字:
您可以用不同的方式在bash中进行算术运算。下面的脚本显示了如何使用双括号在bash中添加两个整数。使用以下代码创建一个名为“add_numbers.sh”的文件。将从用户处获取两个整数值,并打印相加结果。
#!/垃圾桶/垃圾桶
echo“输入第一个数字”
读取x
echo“输入第二个数字”
读取y
((总和=x+y))
echo“加法的结果=$sum”
使用bash命令运行该文件。
$bash add_numbers.sh
您可以查看下面的链接来了解更多关于bash算法的信息。
转到顶部
创建函数:
下面的脚本显示了如何创建一个简单的函数并调用该函数。创建一个名为“function_example.sh”的文件,并添加以下代码。您可以仅按名称调用任何函数,而无需在bash脚本中使用任何括号。
#!/垃圾桶/垃圾桶
函数F1()
{
echo“我喜欢bash编程”
}
一层楼
使用bash命令运行该文件。
$bash函数_example.sh
转到顶部
使用参数创建函数:
Bash不能在函数声明时声明一个或多个函数参数。但您可以通过使用其他变量来使用函数中的参数。如果在函数调用时传递了两个值,则使用$1和$2变量来读取这些值。创建一个名为“function|_parameter.sh”的文件,并添加以下代码。这里,函数“Rectangle_Area”将根据参数值计算矩形的面积。
#!/垃圾桶/垃圾桶
矩形面积(){
面积=$(($1*$2))
echo“面积为:$Area”
}
矩形_区域10 20
使用bash命令运行该文件。
$bash函数_parameter.sh
转到顶部
传递函数返回值:
Bash函数可以传递数值和字符串值。下面的示例显示了如何从函数中传递字符串值。创建一个名为“function_return.sh”的文件,并添加以下代码。函数greeting()将一个字符串值返回到变量val中,该变量稍后将与其他字符串组合打印。
#!/垃圾桶/垃圾桶
函数问候(){
str=“你好,$name”
echo$str
}
echo“输入您的姓名”
读取名称
val=$(问候语)
echo“函数的返回值为$val”
使用bash命令运行该文件。
$bash函数_return.sh
您可以查看以下链接以了解有关bash函数使用的更多信息。
转到顶部
生成目录:
Bash使用“mkdir”命令创建一个新目录。创建一个名为“make_directory.sh”的文件,并添加以下代码以获取用户的新目录名。如果当前位置不存在目录名,则它将创建目录,否则程序将显示错误。
#!/垃圾桶/垃圾桶
echo“输入目录名”
读取新目录
`mkdir$newdir`
使用bash命令运行该文件。
$bash make_directory.sh
转到顶部
通过检查是否存在生成目录:
如果您想在执行“mkdir”命令之前检查当前位置是否存在目录,则可以使用以下代码-d'选项用于测试特定目录是否存在。创建一个名为“directory_exist.sh”的文件,并添加以下代码以通过检查是否存在来创建目录。
#!/垃圾桶/垃圾桶
echo“输入目录名”
读取ndir
if[-d“$ndir”]
然后
echo“目录存在”
其他的
`mkdir$ndir`
echo“已创建目录”
fi
使用bash命令运行该文件。
$bash directory_exist.sh
您可以查看以下链接以了解有关bash目录创建的更多信息。
转到顶部
读取文件:
您可以使用循环在bash中逐行读取任何文件。创建一个名为“read_file.sh”的文件,并添加以下代码以读取名为“book.txt”的现有文件。
#!/垃圾桶/垃圾桶
file='book.txt'
同时读取行;做
echo$line
done>'运算符。创建一个名为“append_file.sh”的文件,并添加以下代码以在文件末尾添加新内容。在这里,“Learning Laravel 5”将在执行脚本后添加到“book.txt”文件的末尾。
#!/垃圾桶/垃圾桶
echo“附加文件之前”
cat book.txt
echo“Learning Laravel 5”>>book.txt
echo“附加文件后”
cat book.txt
使用bash命令运行该文件。
$bash append_file.sh
转到顶部
测试文件是否存在:
您可以使用“-e”或“-f”选项来检查bash中是否存在文件-f'选项在以下脚本中用于测试文件是否存在。创建一个名为“file_exist.sh”的文件,并添加以下代码。在这里,文件名将从命令行传递。
#!/垃圾桶/垃圾桶
filename=$1
if[-f“$filename”];然后
echo“文件存在”
其他的
echo“文件不存在”
fi
运行以下命令以检查文件是否存在。此处,book.txt文件存在,book2.txt不存在于当前位置。
ls
$bash file_exist.sh book.txt
$bash file_exist.sh book2.txt
转到顶部
发送电子邮件:
您可以使用“mail”或“sendmail”命令发送电子邮件。在使用这些命令之前,您必须安装所有必要的软件包。创建一个名为“mail_example.sh”的文件,并添加以下代码来发送电子邮件。
#!/垃圾桶/垃圾桶
收件人admin@example.com”
主题=“问候”
消息=“欢迎访问我们的网站”
`mail -s $Subject $Recipient