我正在浏览一个代码库,并在shell脚本中遇到了以下代码:
./some_script.sh
errcode=$?
if [ "$errcode" != 0 ]; then
[ "$SCRIPT_PATH" ] && $SCRIPT_PATH do_something
fi
SCRIPT_PATH
是一个环境变量,它扩展到脚本的路径(比如/usr/bin/abc.sh
)。但是,我不明白if循环中的代码是什么。 [ "$SCRIPT_PATH" ]
做了什么?是否有任何使用它或者这只是写错了吗?我唯一能想到的是,在运行它之前应该[ -f "$SCRIPT_PATH" ]
检查文件是否存在,但我不确定了。
知道还有什么可以做的吗?
答案 0 :(得分:2)
如果程序不为空或未设置,则会在SCRIPT_PATH
中运行该程序(因为这是[ one_arg ]
测试的作用。)
答案 1 :(得分:0)
它是以下的简写:
(0..4).each do |n|
let!(:"deal1_step#{n}") {
FactoryGirl.create(:step,
order_nb: n,
message_content: "this is message #{n}",
background_asset_filename: "campaigns/assets_for_tests/backgroundimage#{n}.jpg",
deal: deal)
}
end
before do
deal1_step1.video_url = "https://www.facebook.com/rihanna/videos/10155221800656676/"
deal1_step1.video_x = 500
deal1_step1.video_y = 500
# may need to save deal1_step1 depending on exactly what you're looking for
deal1_step2.update_attributes(video_url: "https://www.facebook.com/rihanna/videos/10155221800656676/", video_x: 500, video_y: 500 )
...
end
它通过滥用链式条件和短路的方式来工作。在if [ "$errcode" != 0 ]; then
if [ "$SCRIPT_PATH" ]; then
$SCRIPT_PATH do_something
fi
fi
声明中。
这是一个好主意是......值得商榷。