Question Une alternative à la commande shell Unix à echo


J'essaie de sortir des littéraux de chaîne dans un fichier. Jusqu'à présent, j'ai essayé d'utiliser la commande echo, mais j'ai malheureusement découvert qu'il était impossible de générer "-n", "-e" ou "-E" (du moins sans compliquer le code). Existe-t-il une autre commande que je peux utiliser pour générer une chaîne littérale?

Il est préférable que la commande soit disponible dans les machines distantes auxquelles je me connecte - j'essaie de mettre à jour les fichiers du côté distant.

Bien sûr, je peux simplement transmettre les données du côté client, mais si c'est le cas, je dois me reconnecter au serveur SSH après chaque commande.

La solution de contournement que j'utilise:

echo alabama | ssh server dd of=/tmp/alabama conv=fsync
echo china | ssh server dd of=/tmp/china conv=fsync

Ce que je veux faire:

(echo 'echo alamaba | dd of=/tmp/alabama conv=fsync'
echo 'echo china | dd of=/tmp/china conv=fsync') | ssh server /bin/sh

Je passe des chaînes aléatoires à partir d'un programme aléatoire et je veux m'assurer que cette dernière forme peut fonctionner avec les chaînes '-e' et '-n' et '-N'


4
2018-04-01 13:51


origine




Réponses:


Utilisation printf:

printf '%s\n' "-n"

11
2018-04-01 14:15





Pour votre exemple particulier, vous pouvez utiliser les chaînes de bash ici (voir man). Au lieu de cela:

echo alamaba | dd of=/tmp/alabama conv=fsync

tu peux le faire:

dd of=/tmp/alabama conv=fsync <<< alabama

Par exemple. essaye ça:

dd of="-e abc -N def" conv=fsync <<< "-e abc -N def"

0
2018-04-01 14:12