【问题标题】:Bash Script with command line arguments which are files [duplicate]带有作为文件的命令行参数的 Bash 脚本 [重复]
【发布时间】:2013-01-14 18:38:03
【问题描述】:

我正在尝试编写一个 bash 脚本,它将文件作为命令行参数,并将该文件的名称、行数和最后修改日期附加到文件中。我对如何从 bash 脚本中访问该文件以及命令行参数在脚本中的行为方式感到困惑。

到目前为止,这是我的脚本:

#!/bin/bash

filename = $1
linecount = $(wc -l $1)
lastmod = $(date -r $1)
echo "$filename $linecount $lastmod" >> $1

我认为我在引用 $1 时做错了。通常对如何操作作为文件的命令行参数感到困惑。

【问题讨论】:

  • 您当前的脚本有什么问题?
  • assignment = 周围不应有空格。换句话说,filename=$1
  • 除非您希望linecount 包含文件名,否则请使用linecount=$( wc -l < $1 )

标签: file bash unix command-line-arguments


【解决方案1】:

位置参数 ($1, $2, ...) 是正确的方法。您可能会遇到特殊字符(如空格)和转义问题,但否则您的脚本应该可以正常运行。

【讨论】:

    【解决方案2】:

    删除等号周围的空格。 shell 脚本中的赋值必须像这样混合在一起:

    filename=$1
    linecount=$(wc -l $1)
    lastmod=$(date -r $1)
    

    【讨论】:

      猜你喜欢
      • 2015-05-05
      • 2021-05-02
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 1970-01-01
      • 2013-10-22
      • 2017-11-29
      • 1970-01-01
      相关资源
      最近更新 更多