Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 最简单的C/C++#/ Java程序员外壳大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我对bash编程有点挣扎,因为我似乎不理解语法规则.例如: read confirm if [ "$confirm" == "yes" ]; then echo "Thank you for saying yes" else echo "Why did you say no?" fi 在此代码中,您可以使用许多表单来执行相同的操作: "$confirm" == "yes" $con
我对bash编程有点挣扎,因为我似乎不理解语法规则.例如:

read confirm
if [ "$confirm" == "yes" ]; then
    echo "Thank you for saying yes"
else
    echo "Why did you say no?"
fi

在此代码中,您可以使用许多表单来执行相同的操作:

"$confirm" == "yes"
$confirm == "yes"
"$confirm" == yes
$confirm == yes

那么规则是什么?除此之外,它非常严格,所以如果你在'[‘和”’之间没有空格的情况下编写上面的if语句,你就会收到错误.所以我的问题是:

>有人能让我对shell脚本中的’基本’语法规则有所了解吗?如果你愿意,你可以把它称为语法.@H_419_22@>据我所知,有三种不同的shell编程脚本.对于C,C#和Java等语言的程序员来说,哪一个最容易学习?

问候,@H_419_22@Rafid

解决方法

规则很简单但很微妙.你给出的例子并不完全等同,它们的含义略有不同.有关相当好的参考,您可以阅读 Shell Command Language,其中包含POSIX shell.大多数shell,当然包括bash,zsh和ksh,都是POSIX shell,并且至少会实现那里列出的内容.某些shell可能符合规范的早期版本或类似但不符合要求.

如果您正在学习Unix shell脚本,则需要记住的主要规则是:表达式由空格分隔.从技术上讲,它们由变量$IFS中列出的任何字符分隔,但在正常情况下这相当于空格.

如果你在bash中说[“$a”=“$b”],shell会尝试将整个字符串作为命令读取,评估$a和$b.假设$a的值是文字a,$b的值是文字b,shell将尝试执行名为[a = b]的命令,这是一个合法的文件名.引号被shell解释为特殊但[不是,因为它仅在作为单独的标记写入时才是特殊的.它没有被空格分隔.

您在shell中看到和执行的几乎所有操作都是命令.字符[不是语法,它是一个命令.命令采用以空格分隔的参数.这些参数意味着什么取决于命令,而不是shell.在C中,if(a == b)由解析器处理,除了a和b的值.在bash中,如果shell首先解析[“$a”==“$b”],它将计算变量$a和$b,然后执行命令[.有时这是一个shell内置命令,有时它实际上是一个单独的可执行文件(在你的系统中查找/ bin / [].这意味着a == b]根本不被bash解释,而是一种特定于域的语言,由[来解释,也被称为test.事实上,如果测试“$a”==“$b”,你可以写.在这种形式下,测试不需要关闭],但其他一切都是相同的.要查看哪些测试将对这些参数执行,请阅读帮助测试或人工测试.

学习Unix shell脚本时需要记住的另一条规则是:首先扩展变量,然后评估命令.这意味着如果你在一个变量中有一个空格,比如foo =“ab”那么shell会在变量扩展后看到空格:ls $foo本身就会抱怨它找不到文件a而且找不到它文件b.为了获得您可能期望从其他语言中获得的行为,您几乎总是想要引用您的变量:ls“$foo”,它指示shell将扩展变量视为单个字符串而不是重新标记化.

Shell脚本充满了奇怪的东西,但它并非不合理(至少在大多数情况下不是这样).一些历史性的疣确实存在,但是一旦掌握了基础知识,就没有太多的规则可以记住.只是不要指望它像传统的C语言一样操作,你不会太惊讶.

大佬总结

以上是大佬教程为你收集整理的linux – 最简单的C/C++#/ Java程序员外壳全部内容,希望文章能够帮你解决linux – 最简单的C/C++#/ Java程序员外壳所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: