如何将命令行参数放到shell脚本中

问题描述:

我有一个可执行的shell脚本名称project2。以下是我的老师给我的项目指导之一。如何将命令行参数放到shell脚本中

此脚本必须接受至少一个 命令行参数:目录 其中它的输出将被放置。如果 那个目录没有在 命令行上给出,那么脚本应该使用合理的默认目录 。

你能告诉我如何让我的脚本接受命令行。我以前没有做过这样的事情。任何帮助将不胜感激。非常感谢。

+0

我假设你正在使用bash,而不是其他一些shell,对吗? – 2010-11-15 06:43:06

+0

是的,我使用的是Bash – 2010-11-15 06:43:58

对于bash,命令行参数存储在$1,$2等等,而$#会给你计数。此外,shift可用于将它们全部“左移”一个位置并减少计数。

下面的脚本是了解一个很好的起点的参数是如何工作的:

echo $# 
while [[ $# -gt 0 ]] ; do 
    echo "$1" 
    shift 
done 

当你运行它:

./myprog.sh hello there my name is "pax  diablo"

输出:

 
6 
hello 
there 
my 
name 
is 
pax  diablo 

你的任务的基本思想是:

  • 检查参数计数以查看它是否为零。
  • 如果它为零,请将变量设置为一些有用的默认值。
  • 如果它不是零,请根据第一个参数设置该变量。
  • 做任何你必须做的变量。
+0

另请参阅'man bash'中的“特殊参数”部分 – 2010-11-15 06:56:10

+0

哇,谢谢你的详细信息。现在我明白它是如何工作的。非常感谢。 – 2010-11-15 08:02:52

看一看Advanced Bash Scripting guidethis section

我建议您阅读整个指南。