练习所编写的shell脚本存放路径:/home/benjamin/bin
输入命令:
read -p "Please input (Y/N): " yn参考python的语法,这里字符串部分为提示语句,yn为存储输入的变量
(2).简单加减乘除
read -p "first number: " firstNum read -p "secound nmumber: " secoundNum total=$(( ${firstNum} * ${secoundNum} ))利用$((计算式))可以进行数值运算,仅支持整数.
会使用一个新的bash环境来执行脚本内的命令,也就是子进程中执行.重点在于当子进程完成后,子进程中的各种变量和操作不会穿回到父进程中.
在父进程中执行,用于生效系统中的各种配置文件.
test命令可以对文件属性,表达式,字符串进行一定程度的判断.
<<鸟哥>>P395
除了test命令之外,也可以使用判断符号[ ](中括号)进行数据的判断.
[ "${yn}" == "y" -o "${yn}" == "Y" ]中括号中的每个组件都要有扣个相隔,变量(避免其值被作为变量名)和常数都应使用双引号引起来,
以上代码展示了一个命令的执行在脚本内部的参数表示,$0为命令的脚本文件名,$1~$4分别为可以附加的变量
还有一些特殊用法:
$#: 代表参数的数量$@: 代表参数列表语法:
# 多个条件判断(if...elif...elif...else)分多种不同情况执行 if [ 条件判断式一 ];then 满足条件判断式一执行的命令. elif [ 条件判断式二 ];then 满足条件判断式二执行的命令. else 当不满足前两种条件判断式时执行的代码 fi语法:
case $变量名称 in #关键字为case,变量名称前有美元符号 "第一个变量内容") 程序段 ;; "第二个变量内容") 程序段 ;; *) #最后用*代表其他的所有其他值 不包含前两个变量内容执行的程序段 ;; esac语法:
function fname(){ 程序段 } # 调用 fname opt1 opt2 opt3就是寻常编程语言中的方法
内置变量与shell脚本的变量很类似,$0代表函数名,$1$2…代表括号中的后续变量.
语法:
# while循环意为当condition为真时一直进行循环 while [ condition ] # condition是一个判断式 do 程序段落 done # until循环意为一直进行循环,直到condition为真时退出循环 until [ condition ] do 程序段落 done语法:
for var in con1 con2 con3... do 程序段 done # 使用以下方式生成序列来代替con1 con2 con3 $(seq 1 100) ==> 1 2 3 4 5...100 {1..100} ==> 1 2 3 4 5...100 {a..z} ==> a b c d e...z类似与Python中的for循环,或Java中的foreach循环.
在每一次循环中,var的值分为为con1,con2,con3.
for循环的另外一种写法:
for(( 初始值; 判断式; 运算 )) do 程序段 done类似Java和c中的for循环.
