【问题标题】:Best Way To Carry Positional Parameter From Script To Subscript In Linux在 Linux 中将位置参数从脚本传送到下标的最佳方法
【发布时间】:2016-01-31 21:27:36
【问题描述】:

我已经设置了一个 Crontab,它执行“find”命令,然后在它的每个参数上执行一个 shell 脚本。在第一个 shell 脚本的最后是另一个执行另一个 shell 脚本的“查找”命令。我的问题:有没有办法将原始参数从第一个脚本转移到第二个脚本?我基本上只需要第一个脚本参数的原始文件路径/文件名,以便对其执行一些参数扩展并获取一些日志文件。

以下是脚本的基础知识:

Crontab:找到“一些文件”-exec /home/Conversion.sh {} \;

在 Conversion.sh 的末尾:找到“一些文件”-exec /home/Copy.sh {} \;

没有办法在 Conversion.sh 之后准确跟踪文件,因为我在这些参数上使用了“Filebot”,这完全改变了每个参数的文件名,因此我必须再次使用“find”命令在末尾。任何帮助都将不胜感激!

【问题讨论】:

    标签: linux bash positional-parameter


    【解决方案1】:

    明确地传递它们:

    find "some files" -exec /home/Copy.sh {} "$@" \;
    

    【讨论】:

    • 只要确保在任何位置参数中都没有分号,或者在$1 或任何{} 中没有+,因为那真的会与find 混淆。年代-exec。如果位置参数来自用户输入(并且文件名应该被视为用户输入),请真正执行完整性检查,否则这会受到任意代码执行的影响。
    • 我认为唯一的问题是只是 ;+ 的参数,但这是一个很难解决的问题。
    • 是的,我就是这个意思! (对不起,如果不够清楚)。
    • 感谢您的建议!子脚本 (Copy.sh) 是否仍然能够从父脚本 (Conversion.sh) 扩展第一个位置参数 ($1)?我的印象是位置参数是脚本运行的 shell 独有的?如果是这样,是否可以将文件路径/文件名永久设置为两个脚本都可以访问的变量?
    • 您可以在Conversion.sh 中创建一个导出变量,然后让Copy.sh 在其环境中查找它。这可能比将值作为位置参数传递更好。 export filepath=$1 filepath=$2; find "some files" -exec /home/Copy.sh {} \;.
    猜你喜欢
    • 2017-03-06
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多