此代码块将复制我的问题。当我连接文件列表时,我收到“输入文件输出文件”错误。
文件串联工作,生成的$ concat_file正是我想要的。我无法弄清楚如何抑制错误,并且当作业频繁运行时它正在填满我的邮箱。其他帖子建议添加“|| true”,但这不起作用。
任何关于错误抑制或替代方法的帮助都会很棒。感谢
working_dir=~/files_for_concat
dt=$(date +%Y_%m_%d_%H_%M_%S)
concat_file=$working_dir/$dt
mkdir $working_dir
cd $working_dir
echo "one" > one
echo "two" > two
find $working_dir -maxdepth 1 -type f -print0 |
sort -z |
xargs -0 cat -- >> $concat_file
cat $concat_file
答案 0 :(得分:-1)
问题来自concat_file
位于working_dir
内的事实; find
concat_file
会xargs
给concat_file
,find $working_dir -maxdepth 1 -type f -print0 |
grep -v "$concat_file" | # This excludes the file
sort -z |
xargs -0 cat -- >> $concat_file
反过来会尝试自己捕获文件。
解决方案是从搜索中排除test -d "$working_dir" || mkdir "$working_dir"
cd "$working_dir" || exit 1
。例如,试试这个:
public function updateEs($data)
{
$params = array();
$params['index'] = \App::environment();
$params['type'] = $data['context'];
$model = new \Modules\Catalog\Repositories\ProductRepo;
$form = $model->loadProduct($data['id']);// whole data come from database
$data=(object)$form; //array to object
$data['body'] = $data;
$data['index'] = 'my_index';
$data['type'] = 'product';
$data['id' ]= $data['id'];
$response = \Es::update($data);
}
您也可以这种方式改进脚本的开头:
IF EXISTS (SELECT TOP 1 1 FROM TBL_STAGING)
BEGIN
BEGIN TRANSACTION NT_ALL_DOMAIN
INSERT INTO TBL_DOMAIN
(DOMAIN_NAME,
DISTINGUISHED_NAME,
EMAIL_ADDR_I)
SELECT DOMAIN_NAME,
DISTINGUISHED_NAME,
EMAIL_ADDR_I
FROM TBL_STAGING
COMMIT
END
ELSE
BEGIN
RETURN 'no data on table'
END