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