【问题标题】:Bash Script to copy contents from one file to another用于将内容从一个文件复制到另一个文件的 Bash 脚本
【发布时间】:2013-07-09 17:56:15
【问题描述】:

我正在尝试创建一个脚本,它需要偶数个文件名,并将内容从一个文件复制到另一个文件。例如:如果提供了 4 个文件名,则将 1 的内容复制到文件 2,将文件 3 的内容复制到文件 4。

直到现在我才想到..

if [ expr $# % 2 -ne 0 ]
then
echo: Please enter even number of filenames
exit
fi
for file in $*
do
.....
....

请告诉我如何继续这个脚本..非常感谢提前..

【问题讨论】:

    标签: bash file loops


    【解决方案1】:

    您可以在使用文件时从参数列表中删除文件,使用shift 命令:

    if (( $# % 2 )); then
        echo Please enter an even number of filenames
        exit 1
    fi
    
    while (( $# )); do
        src=$1
        dst=$2
        cp "$src" "$dst"
        shift 2
    done
    

    【讨论】:

    • @PaulRubel 不是 shift 2 负责这个吗?
    • 谢谢@chepner,你是明星 :)
    • 一个快速的 [愚蠢] 问题.. 双括号在这里有什么意义?,我试过它不能使用一个或没有括号..
    • (( ... ))bash 中的算术表达式。我用它作为您涉及expr 的测试的更简单替代品。更标准的替换是 [ $( $# % 2 ) -ne 0 ](在 POSIX 兼容的 shell 中算术不需要 expr)。
    • 啊,我的错...我指的是 while 语句中的双括号。我想出了测试条件/如果括号。我无法理解它对 while 循环有什么意义......我尝试使用单括号,它给了我“不明确的重定向”错误。
    猜你喜欢
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 2017-03-01
    • 1970-01-01
    • 2022-11-24
    相关资源
    最近更新 更多