有时当我使用curl
命令将一些文件上传到我的ftp服务器执行bash脚本时,它会返回一些错误,例如:
56 response reading failed
Run Code Online (Sandbox Code Playgroud)
我必须找到错误的行并手动重新运行它们就可以了.
我想知道是否可以在发生错误时自动重新运行.
我的脚本是这样的:
#there are some files(A,B,C,D,E) in my to_upload directory,
# which I'm trying to upload to my ftp server with curl command
for files in `ls` ;
do curl -T $files ftp.myserver.com --user ID:pw ;
done
Run Code Online (Sandbox Code Playgroud)
但有时A,B,C会成功上传,只有D留下"错误56",所以我必须手动重新运行curl命令.此外,正如Will Bickford所说,我更喜欢不需要确认,因为我在脚本运行时总是睡着了.:)
在bash中,我知道&&
如果我想B
在命令A
成功后才运行命令我应该使用:
A && B
Run Code Online (Sandbox Code Playgroud)
但是,如果我想要的D
仅被运行后A
,B
,C
所有的成功吗?是
'A&B&C' && D
Run Code Online (Sandbox Code Playgroud)
好?
此外,如果我想确切地知道哪个命令失败了,我应该怎么做A
,B
并且C
(因为它们将运行多次,如果我逐个检查将需要一段时间).
一旦命令失败,错误信息是否可能会自动输出到文本文件?
就我而言,A
,B
,C
都curl
同时B
是rm
,我的剧本是这样的:
for f in *
do
curl -T server1.com
curl -T server2.com
...
rm $f
done
Run Code Online (Sandbox Code Playgroud) 例如,我尝试使用cURL上传了4个文件(A,B,C,D),但有时会失败.我的脚本是这样的:
for f in `ls`
do
curl -T $f ftp.server.com
done
Run Code Online (Sandbox Code Playgroud)
A,B,C成功上传,而D则留下了某种错误.我想要做的是删除A,B,C并在目录中只保留D.
我知道返回代码将在$?
命令执行后包含在内,但是$?
在脚本执行后意味着什么?该脚本中最后一个命令的返回码?
我可以判断一个脚本是否已经从头到尾被执行并且没有被某些意外的系统停止或某些东西打断?
如果我有一个像下面这样的脚本,
Command A;
if [ $? -eq 0]
then
echo "OK" >> log
else
echo "failed" >> log
fi
Run Code Online (Sandbox Code Playgroud)
并且系统在A
运行时暂停,我会在该日志文件中找到什么?"OK","失败"或什么都没有?
这是一个包含许多单词的文本文件,每个单词由空格分隔符或换行符分隔.现在我想在每个人面前添加一个角色,比如"#""$""@",我发现一个接一个地做这个工作需要花费太多时间,有没有更好的方法,在bash?
我想从会员列表页面收集用户名,如下所示:http: //www.marksdailyapple.com/forum/memberslist/
我想从所有页面获取每个用户名,
我想用bash在linux中做这个
我应该从哪里开始,有人可以给我一些提示吗?