【问题标题】:in bash script, see and use the exact entire command line在 bash 脚本中,查看并使用完整的命令行
【发布时间】:2012-11-22 22:06:13
【问题描述】:

有什么方法可以访问键入的确切命令行?

(变量展开后OK)

这是我能想到的实现以下目标的唯一方法:

myscript.sh file1 file2 file3 -m"A multi word comment" [other parameters/options]

-- 在我们有效调用的脚本内部--

svn commit file1 file2 file3 -m"A multi word comment" [other parameters/options]

-- 无需复制 svn 本身所做的所有解析,只是为了理解命令行

(我遇到的问题是,在示例中,$4 将是“-mA 多字注释”,这将是一团糟。我宁愿能够拍摄整个命令行,引号和所有,直接到 svn 正是 svn 想要看到它的方式。)

如果有人知道编写 svn "wrapper" 的更好方法,我也想听听。

【问题讨论】:

    标签: bash command-line parameters


    【解决方案1】:

    您是否在脚本中尝试过:

    svn commit "$@"
    

    说明:

    • $@ 是一个特殊的变量,它包含 shell 的所有参数,从 $1 开始。

    【讨论】:

    【解决方案2】:

    在里面有效调用你可以:

    svn commit "$@"
    

    至于确切地查看它是如何输入的——不。您无法区分 a ba b(注意参数之间的一两个空格 - 啊,我认为即使 SO 也隐藏了第二个空格 ;))。但你不需要。

    【讨论】:

    • 谢谢,是的,都是真的——我的错误是认为-m"multi word comment""-mmulti word comment" 之间会有区别,但实际上,似乎没有——svn 两者都适用
    • 是的,实际上,svn"-mmulti word"-m"multi word"-mmulti\ word 获取相同的字符串。
    【解决方案3】:

    如果脚本本身不需要参数,另一种方法是使用别名,像这样

    alias commit='code_check && svn ci'
    

    (其中 code_check 是在 svn 提交之前执行的脚本或函数)

    然后你就可以打电话了

    commit file1 file2 file3 -m"A multi word comment" [other parameters/options]
    

    别名扩展将行变成

    code_check && svn ci file1 file2 file3 -m"A multi word comment" [other parameters/options]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2016-12-27
      • 2012-10-01
      • 1970-01-01
      • 2016-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多