我正在为一个开始的 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'
我正在为一个开始的 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'
当您使用echo
时,该行的其余部分(在 shell 可能处理之后)将输出到stdout
(或可能通过管道传输到下一个进程)。这可以防止cal
被视为命令。
'nix 中使用了不同类型的引号:"
双引号和'
单引号。还有 ` 反引号。每个都有一个非常具体的用途。
任何被反引号包围的命令都是内联扩展的——也就是说,它被执行并且输出被放在行中。因此,
echo hello `whoami`
如果您的hello john
用户名(对whoami
命令的响应)是john
.
单引号具有相反的效果:它“保护” shell 中的任何文本,因此不会再尝试处理。因此
echo hello '`whoami`'
将导致
hello '`whoami`'
双引号"
的限制较少。( $
variable)、\
(escape) 和 ` 反引号仍会被解释,但这是将带有空格的参数传递给脚本的好方法。因此
doSomething for me
将两个参数传递给函数doSomething
:for
和me
。另一方面
doSomething "for me"
只传递一个参数,for me
我希望这可以为您澄清事情。