在Bash中的Modulinos

2021-06-16 13:52:02

6月12日,2021年Modulino是一个文件,它在导入时与库类似于库,并且在执行时类似于脚本。我第一次阅读它们掌握Perl,但您也可以用其他语言创建它们。这是在bash中做的。

具有脚本的常见重构是封装功能中的所有代码行为。由于这个脚本只有一件事,这是一个小的变化:

现在而不是打印“你好,世界!”,我可以让它问候它的任何名字。

#!/ bin / bash函数hello {if [ - [-n" 1美元" ]];然后名称=" 1美元"否则名称="世界" fi echo"你好,$名称!"你好" $ @"

这条线你好" $ @"调用Hello函数,传递任何命令行参数所接收的脚本。我添加了一个if子句,如果它不为空,则使用第一个函数参数,否则默认为“世界!”并保持原始行为。

要使此脚本表现类似于库,我只会向Hello函数调用添加一个条件:

#!/ bin / bash函数hello {if [ - [-n" 1美元" ]];然后名称=" 1美元"否则名称="世界" fi echo"你好,$名称!" [[" $ bash_source" ==" $ 0" ]]&&你好" $ @"

这会检查Bash_source变量(脚本名称)等于$ 0,它是调用代码的文件的名称。 这些值匹配脚本像程序调用时:./hello.bash。 但是,当脚本是0美元时,0美元评估到/ bin / bash。 如果您希望能够通过源将脚本代码导入其他脚本,这可能很有用。 这样做的一个原因是测试脚本的单位: #!/ bin / bash pass = 0函数失败{echo" 1美元" pass = 1} source" ./ hello.bash" def = $(hello)[[" $ def" =="你好,世界!" ] || 失败"错误的默认问候语:$ def" arg = $(hello david)[[" $ arg" =="你好,大卫!" ] || 失败"错误arg问候:$ arg" 退出" $通行证和#34;