Svn 如何在shell中从控制台获取逐行输入
如何在执行svn更新时从控制台逐行读取输入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”命令
!/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