Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 如何在shell中从控制台获取逐行输入_Svn_Sh - Fatal编程技术网

Svn 如何在shell中从控制台获取逐行输入

Svn 如何在shell中从控制台获取逐行输入,svn,sh,Svn,Sh,如何在执行svn更新时从控制台逐行读取输入 !/bin/bash for line in $(svn update) do printf "$line\n"; done 这将逐字打印。我需要一行一行的 例: 从控制台抓取上述文件 如何在上面grep文件的开头(amdu)并采取措施 如果 然后svn导入文件:/// fi 如果M 然后。。 fi 对于D和U,依此类推 svn update | while read LINE; do ... done 有关shell中的“Read”命令

如何在执行svn更新时从控制台逐行读取输入

!/bin/bash
for line in $(svn update)
do
    printf "$line\n";
done
这将逐字打印。我需要一行一行的 例:

从控制台抓取上述文件

如何在上面grep文件的开头(amdu)并采取措施

如果 然后svn导入文件:/// fi

如果M 然后。。 fi

对于D和U,依此类推

svn update | while read LINE; do
 ...
done
有关shell中的“Read”命令,请阅读更多信息

请注意,shell变量在内部发生了更改,而块不太可能在外部看到(这取决于shell,但大多数不会导出它们)

另一种方法是将IFS重新定义为单个'\n'字符,但这在任何地方都不起作用-在shell中经常会看到解析错误。我不知道bash的稳定性


通常,最好用比shell更高级的语言编写这样的脚本(例如Perl)。

更新日志是您选择的文件,它将被命名为“svn_UPDATE_2012-05-13.1336839745”,其中“.”后面的后缀数字是自“1970-01-01 00:00:00 UTC”起的秒数。或者使用%N纳秒

#!/bin/sh

set -e

UPDATE_LOG=/tmp/svn_update_$(date +%F.$s)

svn update > $UPDATE_LOG

while read -r line; do
    filename=${line#* }
    case ${line%% *} in
    A)
        # svn import file:/// $filename ?
        ;;
    D)
        # so on ...
        ;;
    M)
        # ...
        ;;
    U)
        # so on ...
        ;;
    *)
        echo "He's Dead, Jim!"
        exit 1
        ;;
    esac
done << $UPDATE_LOG

+1代表答案
…同时阅读第
-1行代表“最好用更高级的东西编写这样的脚本”;-)。。祝大家好运。如果在while循环中是mdu,你能告诉我如何对文件修改器进行grep吗?参考上述示例
svn更新|同时读取字母rest;对于简单的情况,请执行…
。请注意,第一个字段可能为空,也可能不止一个字母。为了稳健性,最好请求并正确解析机器可读的输出。您尝试解决哪个业务任务?
#!/bin/sh

set -e

UPDATE_LOG=/tmp/svn_update_$(date +%F.$s)

svn update > $UPDATE_LOG

while read -r line; do
    filename=${line#* }
    case ${line%% *} in
    A)
        # svn import file:/// $filename ?
        ;;
    D)
        # so on ...
        ;;
    M)
        # ...
        ;;
    U)
        # so on ...
        ;;
    *)
        echo "He's Dead, Jim!"
        exit 1
        ;;
    esac
done << $UPDATE_LOG
A paris/input/hyb/shmc/com//hwmca/workload/eam/tasks/create/res/newap.java
M paris/input/hyb/shmc/com//hwmca/workload/eam/tasks/create/res/telap.html.
D paris/input/hyb/shmc/com//hwmca/workload/eam/tasks/create/res/newap_subdirs.mak.
U paris/input/hyb/shmc/com//hwmca/workload/eam/tasks/create/res/ABC.png
  paris/input/hyb/shmc/com//hwmca/workload/eam/tasks/create/res/He_s_Dead.Jim