如何做农产品网站,lnmp wordpress 不显示主题,小程序模板消息推送规则,山东省聊城建设学校网站在Udig软件的启动脚本中使用了while循环、if语句、for循环#xff0c;其他内容基本都是变量的定义#xff0c;所以尝试弄懂脚本中这三部分内容#xff0c;了解脚本执行过程。
#xff08;1#xff09;while循环
while do循环内容如下所示#xff0c;在循环中还用了expr…在Udig软件的启动脚本中使用了while循环、if语句、for循环其他内容基本都是变量的定义所以尝试弄懂脚本中这三部分内容了解脚本执行过程。
1while循环
while do循环内容如下所示在循环中还用了expr命令和正则表达式等内容解析符号链接来找到程序的实际路径。符号链接Symbolic Link也称为软链接Soft Link是一种特殊的文件类型它指向另一个文件或目录类似于Windows系统中的快捷方式。
while [ -h $PRG ]; dolsls -ld $PRGlinkexpr $ls : .*- \(.*\)$if expr $link : /.* /dev/null; thenPRG$linkelsePRGdirname $PRG/$linkfi
donewhile do循环的基本结构如下所示可以看到与python 直接简单的 while 条件: 循环体内命令 这种结构还是有一些差别。上面代码中条件是指 -h $PRG这个指令用于判断变量$PRG所指向的文件是否是一个符号链接其中**-h是一个测试运算符专门用于检查文件是否为符号链接。这里使用了测试条件表达式**在之后进行测试条件表达式的学习。
while [ 条件 ];
do# 循环体内的命令
done循环体内循环了大量的命令使用ls -ld命令列出了$PRG的详细信息-d表示只列出$PRG本身的信息而不是其内容第二句使用expr命令结合正则表达式从$ls中提取符号链接指向的目标路径。正则表达式.*- \(.*\)$的含义是匹配以 - 结尾的字符串并提取其后面的部分即符号链接的目标路径然后将其赋值给变量link。这里使用了正则表达式在之后进行正则表达式的学习。 lsls -ld $PRGlinkexpr $ls : .*- \(.*\)$if expr $link : /.* /dev/null; thenPRG$linkelsePRGdirname $PRG/$linkfi在循环中还嵌套另一个if判断语句。上面的第三句代码判断$link是否是一个绝对路径其中expr $link : /.*会尝试匹配以/开头的字符串如果匹配成功说明$link是一个绝对路径。 /dev/null的作用是将expr命令的输出重定向到/dev/null因为只关心匹配是否成功而不关心输出内容。在 Linux 系统中/dev/null 是一个特殊的文件它没有任何数据起着丢弃数据的作用用于一些忽略输出或者输入的场合。 如果$link是一个绝对路径就直接将$link赋值给$PRG这样$PRG就更新为符号链接的实际目标路径。否则的话dirname $PRG会获取$PRG所在的目录路径然后将其与$link拼接起来得到完整的绝对路径并赋值给$PRG。
2for循环
for循环语句遍历命令行参数并检查其中是否有-data参数。如果有则将变量DATA_ARG设置为true。这里的$是一个特殊变量它包含了脚本接收到的所有命令行参数而每个参数会被当作一个单独的元素依次赋值给变量ARG。这里的for循环内部又嵌套了一个if语句用于检查当前的参数$ARG是否等于-data。其中**[ $ARG -data ]是一个测试条件表达式用于比较$ARG和字符串-data是否相等使用了运算符进行字符串比较而then DATA_ARGtrue; fi**表示如果$ARG等于-data则将变量DATA_ARG设置为true。
for ARG in $
doif [ $ARG -data ]; then DATA_ARGtrue; fi
donefor循环的基本结构如下所示
for 变量 in 值1 值n
do# 命令
done3if语句
if语句内容如下所示其用来根据变量$DATA_ARG的值来决定执行不同的命令。第一句是用来检查变量$DATA_ARG的值如果$DATA_ARG的值是一个非空字符串且真值则条件为真执行then部分的代码如果$DATA_ARG的值为空字符串或被视为假值则条件为假执行else部分的代码。then部分的代码中$PRGDIR是一个变量表示程序所在的目录路径$UDIGEXEC也是一个变量表示要执行的程序名称这两个变量组合起来形成完整的命令路径**$接收到的所有命令行参数会传递给$PRGDIR/$UDIGEXEC命令。else部分代码中添加了-data ~/uDigWorkspace**传递给命令的一个额外参数表示指定数据目录为~/uDigWorkspace。
if $DATA_ARG; then $PRGDIR/$UDIGEXEC $
else$PRGDIR/$UDIGEXEC -data ~/uDigWorkspace $
fiif 循环的基本结构如下所示
if 条件
then# 命令1
else# 命令2
fi