Создание сценария оболочки для записи в XML-файл

Вы на правильном пути, используя nc, но если вы действительно хотите просто проверить, можете ли вы установить соединение, используйте nc-z переключатель:

#!/bin/bash
REMOTEHOST=10.11.12.13
REMOTEPORT=1234
TIMEOUT=1

if nc -w $TIMEOUT -z $REMOTEHOST $REMOTEPORT; then
    echo "I was able to connect to ${REMOTEHOST}:${REMOTEPORT}"
else
    echo "Connection to ${REMOTEHOST}:${REMOTEPORT} failed. Exit code from Netcat was ($?)."
fi

0
04.10.2014, 06:47
2 ответа

Не уверен, что ответ все еще требуется для этого. Вы можете использовать XMLStarlet для редактирования шаблона XML. Например,

xmlstarlet edit --update '/rss/channel/title' --value "$ct" "$dirt"
0
28.01.2020, 02:20

Не делайте этого XML. Это плохой джую. XML не является строевой структурой данных, так что вы делаете, создает хрупкий код.

Шарики XML - это путь вперед. Большинство языков у них. Мне нравится Perl и XML :: Twig .

#!/usr/bin/env perl

use strict;
use warnings;

use XML::Twig;

sub insert_new_post {
    my ( $twig, $lang_elt ) = @_;
    my $new_item = XML::Twig::Elt->new('item');
    #you can probably omit the 'last_child' field, as the RSS readers aren't 
    #going to care about ordering, probably. 
    $new_item->insert_new_elt( 'last_child', 'title', "New title" );
    $new_item->insert_new_elt( 'last_child', 'link',  "http://unix.stackexchange.com" );
    $new_item->insert_new_elt( 'last_child', 'guid', "Somenew GUID" );
    $new_item->insert_new_elt( 'last_child', 'pubdate', "Today or something" );
    $new_item->insert_new_elt( 'last_child', 'description', "Fishy fishy fishy" );
    print "Inserting:\n", $new_item->sprint, "\n";
    $new_item->paste_after($lang_elt);
}

my $twig = XML::Twig->new(
    'pretty_print'  => 'indented',
    'twig_handlers' => { 'language' => \&insert_new_post },
);
$twig->parsefile ( 'your_file.xml' );
$twig->print;  #prints to stdout. 
4
28.01.2020, 02:20

Теги

Похожие вопросы