BASH - 添加充当开关的参数

时间:2013-12-19 18:31:37

标签: linux bash shell

我目前正在制作一个BASH脚本(无法按照评分进行发布,但我们可以要求提供指导)并且我已经完成了它。

它经常使用ls命令,我们需要这样做,以便用户可以选择是否希望ls命令包含人类可读的大小格式。 (即ls是否包括-h)。

我想知道,有没有办法让它如果脚本执行的第二个参数是-h,那么所有ls命令都会包含-h选项?

干杯!

3 个答案:

答案 0 :(得分:1)

最简单的方法是

#!/bin/bash
if [[ $1 == -h ]]
then
  flags="-h"
else
  flags=""
fi

ls -l $flags

然后你可以运行

./yourscript -h
./yourscript

它将分别运行带有和不带-h的ls。

解析标志的更强大的解决方案包括getopts,它允许您解析传统的Unix标志规范,如./yourscript -e foo -d bar -vhq。如果你希望你的脚本允许多于这个参数,你应该研究一下。

答案 1 :(得分:0)

如果您正在迭代ls的结果,则需要阅读http://mywiki.wooledge.org/ParsingLs。如果您只是使用ls来显示文件,那就没关系了。

要在脚本中进行选项解析,请使用bash builtin getopts - 在这里搜索getopts,我相信你会找到很多例子。

答案 2 :(得分:0)

尝试类似:

human=${option+-$option}
ls $human
example :
option="h"
echo ls $human 
ls -h