下一页 上一页 目录

10. 杂项

10.1 使用 read 读取用户输入

在许多情况下,您可能希望提示用户输入一些内容,并且有几种方法可以实现这一点。这是其中一种方法

                #!/bin/bash
                echo Please, enter your name
                read NAME
                echo "Hi $NAME!"
        

作为一种变体,您可以使用 read 获取多个值,此示例可能会对此进行澄清。

                #!/bin/bash
                echo Please, enter your firstname and lastname
                read FN LN 
                echo "Hi! $LN, $FN !"
        

10.2 算术运算

在命令行(或 shell)中尝试这个

echo 1 + 1

如果您期望看到 '2',您会感到失望的。如果您希望 BASH 计算您拥有的一些数字怎么办?解决方案是这样

echo $((1+1))

这将产生更“符合逻辑”的输出。这是为了计算算术表达式。您也可以像这样实现它

echo $[1+1]$

如果您需要使用分数或更多数学运算,或者您只是想要这样做,您可以使用 bc 来计算算术表达式。

如果我在命令提示符下运行“echo $[3/4]$”,它将返回 0,因为 bash 在回答时只使用整数。如果您运行“echo 3/4|bc -l”,它将正确返回 0.75。

10.3 查找 bash

来自 mike 的消息(请参阅致谢)

您总是使用 #!/bin/bash .. 您可能想给出一个例子来说明

如何找到 bash 所在的位置。

首选 'locate bash',但并非所有机器都安装了 locate。

从根目录运行 'find ./ -name bash' 通常会起作用。

建议检查的位置

ls -l /bin/bash

ls -l /sbin/bash

ls -l /usr/local/bin/bash

ls -l /usr/bin/bash

ls -l /usr/sbin/bash

ls -l /usr/local/sbin/bash

(一时想不出任何其他目录... 我以前在不同的系统上的

大多数这些地方都找到过它)。

您也可以尝试 'which bash'。

10.4 获取程序的返回值

在 bash 中,程序的返回值存储在一个名为 $? 的特殊变量中。

这说明了如何捕获程序的返回值,我假设目录 dada 不存在。(这也是 mike 建议的)

        #!/bin/bash
        cd /dada &> /dev/null
        echo rv: $?
        cd $(pwd) &> /dev/null
        echo rv: $?
        

10.5 捕获命令的输出

这个小程序显示来自所有数据库的所有表(假设您已安装 MySQL)。另外,请考虑更改 'mysql' 命令以使用有效的用户名和密码。

        #!/bin/bash
        DBS=`mysql -uroot  -e"show databases"`
        for b in $DBS ;
        do
                mysql -uroot -e"show tables from $b"
        done
        

10.6 多个源文件

您可以使用命令 source 使用多个文件。

__待办事项__


下一页 上一页 目录