1

我正在为一个开始的 unix/linux 类编写一个 bash 脚本,让用户输入他们想要查看的月份和年份。给定用户输入,我不确定如何执行日历。

这就是我所拥有的。

#!/bin/bash  
echo -n "Enter the month you wish displayed: "; read month  
echo -n "Enter the year you wish displayed: "; read year  
echo cal '$month' '$year'  
4

1 回答 1

1

当您使用echo时,该行的其余部分(在 shell 可能处理之后)将输出到stdout(或可能通过管道传输到下一个进程)。这可以防止cal被视为命令。

'nix 中使用了不同类型的引号:"双引号和'单引号。还有 ` 反引号。每个都有一个非常具体的用途。

任何被反引号包围的命令都是内联扩展的——也就是说,它被执行并且输出被放在行中。因此,

echo hello `whoami`

如果您的hello john用户名(对whoami命令的响应)是john.

单引号具有相反的效果:它“保护” shell 中的任何文本,因此不会再尝试处理。因此

echo hello '`whoami`'

将导致

hello '`whoami`'

双引号"的限制较少。( $variable)、\(escape) 和 ` 反引号仍会被解释,但这是将带有空格的参数传递给脚本的好方法。因此

doSomething for me

将两个参数传递给函数doSomethingforme。另一方面

doSomething "for me"

只传递一个参数,for me

我希望这可以为您澄清事情。

于 2013-04-09T23:22:14.907 回答